我的标题可能不太清楚,很抱歉,这不容易解释。但是一个例子会更容易理解。
a = [1, 4, 7, 10]
b = [x-1, x, x+1 for x in a]
>> expected result: [0,1,2,3,4,5,6,7,8,9,10,11]
当然,这会引发错误。
是否可以使用列表理解来获得此结果?
我知道我可以使用
b = sum([[x-1, x, x+1] for x in a], [])
来代替,但是可读性较低。 最佳答案
如果要使用列表推导来完成此操作,则需要嵌套两个推导:
>>> b = [ value for x in a for value in (x-1, x, x+1) ]
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
请注意,尽管一旦开始嵌套理解或在其中包含条件,它们很快就会变得不可读,并且在达到这一点之前,您应该切换到嵌套的循环:记住列表理解只是嵌套循环的简写,它不会实际上不会带来任何性能上的好处。
用“ longhand”写出列表理解如下:
b = []
for x in a:
for value in (x-1, x, x+1):
b.append(value)
但实际上,使用以下方法可能会更好:
b = []
for x in a:
b.extend((x-1, x, x+1))
对于相同的结果。
关于python - 如何使用Python中的列表理解功能从一个元素中获取多个元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26571491/