[英]Python list comprehension: add values from a list into multiple separate lists
[英]Python values of multiple lists in one list comprehension
有没有聪明的方法可以在多个列表上编写列表理解?
我知道我可以使用单独的范围列表作为索引,但这样我必须知道长度(或使用len()
函数调用单独获取)。
>>> a = range(10)
>>> b = range(10, 0, -1)
>>> [(a[x],b[x]) for x in range(10)]
[(0, 10), (1, 9), (2, 8), (3, 7), (4, 6), (5, 5), (6, 4), (7, 3), (8, 2), (9, 1)]
我喜欢这样的东西:
>>> [(a,b) for a in range(10) and b in range(10, 0, -1)]
[(0, 10), (1, 9), (2, 8), (3, 7), (4, 6), (5, 5), (6, 4), (7, 3), (8, 2), (9, 1)]
你会怎么写列表理解? 有没有办法用itertools做到这一点?
范围列表只代表任何列表,我不一定想得到元组。 还可以有一个以a和b为参数的函数。 拉链不是我想要的。
更新:“所以拉链不是我想要的。” 我的意思是我不想zip(range(10), range(10, 0, -1))
你的例子只是:
zip(range(10), range(10, 0, -1))
更一般地说,您可以使用zip
加入任何一组iterables:
[func(a, d, ...) for a, b, ..., n in zip(iterable1, iterable2, ..., iterableN)]
如果要将函数应用于多个序列,则需要map
或itertools.imap
:
map(lambda *x: sum(x), range(10), range(10, 0, -1), range(0,20, 2))
除非您更喜欢在列表理解中进行映射,否则无需压缩
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.