如果您想要嵌套 for 循环的效果,请使用:
import itertools
for i, j in itertools.product(range(x), range(y)):
# Stuff...
如果您只想同时循环,请使用:
for i, j in zip(range(x), range(y)):
# Stuff...
请注意,如果x
and y
长度不一样,zip
将截断为最短列表。正如@abarnert 指出的,如果你不想截断到最短列表,你可以使用itertools.zip_longest
.
UPDATE
基于“一个将读取列表“t1”和“t2”并返回所有相同元素的函数”的请求,我认为OP不想要zip
or product
。我认为他们想要一个set
:
def equal_elements(t1, t2):
return list(set(t1).intersection(set(t2)))
# You could also do
# return list(set(t1) & set(t2))
The intersection
的方法set
将返回它和另一个集合共有的所有元素(请注意,如果您的列表包含其他list
s,您可能想要转换内部list
s to tuples
首先让它们是可哈希的;否则调用set
将失败。)。这list
然后函数将集合重新转换为列表。
UPDATE 2
或者,OP 可能需要相同的元素列表中的相同位置。在这种情况下,zip
将是最合适的,并且它截断为最短列表的事实正是您想要的(因为当其中一个列表只有 5 个元素长时,索引 9 处不可能有相同的元素)。如果这就是您想要的,请这样做:
def equal_elements(t1, t2):
return [x for x, y in zip(t1, t2) if x == y]
这将返回一个列表,仅包含列表中相同且位置相同的元素。