我不确定如何说出来,这可能是谷歌没有帮助的原因。但是说我有以下内容:
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']
创建一个与上面的输出相等的列表?
修改
默认项目的意思是,无论“开始”和“结束”之间的数字是什么,您可以使用列表理解来生成,“开始”和“结束”始终是它们的位置。
我问题的最接近的答案是@ whackamadoodle3000,他基本上做了以下但不完全是:
result = ['start'] + [x for x in range(10)] + ['end']
我混淆的原因是我认为我可以在列表理解中完成所有这些:
result = [['start'] + [x for x in range(10)] + ['end']]
另外我忘了你可以用加法运算符合并列表。
答案 0 :(得分:2)
default = ['begin', 'end']
result = [default[0]] + [x for x in range(10)] + [default[1]]
这应该有效
答案 1 :(得分:2)
为什么不创建一个能够产生" start"和"结束"在提供的iterable的任一侧。
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
,则应该循环播放。
e.g。
for i in iterable:
yield i