构造具有默认项的列表

2024-10-02 10:27:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我真的不知道怎么说,这可能就是为什么谷歌一直没有帮助。但假设我有以下几点:

a = ['begin', 'end']
for x in range(10):
  a.insert(-1, x)
print(a)

输出:

['begin', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'end']

我如何制作一个与上面的输出相等的列表,并使用默认项['begin', 'end']?你知道吗

编辑:

我所说的默认项的意思是,不管“begin”和“end”之间的数字是多少,您可以使用列表理解来生成它们,“begin”和“end”总是在它们所在的位置。你知道吗

与我的问题最接近的答案是@whackamadoodle3000,他基本上做到了以下几点,尽管不完全是这样:

result = ['start'] + [x for x in range(10)] + ['end']

我困惑的根源是我认为我可以在一个列表中做所有这些,比如:

result = [['start'] + [x for x in range(10)] + ['end']]

而且我忘了你可以用加法运算符合并列表。你知道吗


Tags: 答案in编辑列表forrange数字result
2条回答
default = ['begin', 'end']
result = [default[0]] + [x for x in range(10)] + [default[1]]

这应该管用

为什么不创建一个函数,在所提供的iterable的两边产生“start”和“end”。你知道吗

def markedrange(iterable, markers=('start', 'end')):
    yield markers[0]
    yield from iterable
    yield markers[1]

print(list(markedrange(range(10))))
print(list(markedrange(['a', 'b', 'c', 'd'], markers=('hi', 'bye'))))

结果:

['start', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'end']
['hi', 'a', 'b', 'c', 'd', 'bye']

如果您使用的是较旧的python版本,并且没有yield from,那么应该在循环中进行屈服。你知道吗

例如

for i in iterable:
    yield i

相关问题 更多 >

    热门问题