相关疑难解决方法(0)

如何并行迭代两个列表?

我在Python中有两个迭代,我想成对地遍历它们:

foo = (1, 2, 3)
bar = (4, 5, 6)

for (f, b) in some_iterator(foo, bar):
    print "f: ", f, "; b: ", b
Run Code Online (Sandbox Code Playgroud)

它应该导致:

f: 1; b: 4
f: 2; b: 5
f: 3; b: 6
Run Code Online (Sandbox Code Playgroud)

一种方法是迭代索引:

for i in xrange(len(foo)):
    print "f: ", foo[i], "; b: ", b[i]
Run Code Online (Sandbox Code Playgroud)

但这对我来说似乎有点不合时宜.有没有更好的方法呢?

python iterator for-loop list

767
推荐指数
6
解决办法
58万
查看次数

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

有没有聪明的方法可以在多个列表上编写列表理解?

我知道我可以使用单独的范围列表作为索引,但这样我必须知道长度(或通过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)]
Run Code Online (Sandbox Code Playgroud)

我喜欢这样的东西:

>>> [(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)]
Run Code Online (Sandbox Code Playgroud)

你会怎么写列表理解?有没有办法用itertools做到这一点?

范围列表只代表任何列表,我不一定想得到元组.还可以有一个以a和b为参数的函数.拉链不是我想要的.

更新:"所以拉链不是我想要的." 我的意思是我不想要zip(range(10), range(10, 0, …

python iterator list-comprehension list

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

iterator ×2

list ×2

python ×2

for-loop ×1

list-comprehension ×1