繁体   English   中英

一个列表理解中的多个列表的Python值

[英]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)]

如果要将函数应用于多个序列,则需要mapitertools.imap

map(lambda *x: sum(x), range(10), range(10, 0, -1), range(0,20, 2))

除非您更喜欢在列表理解中进行映射,否则无需压缩

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM