l1 = ['a','b']
l2 = ['c','d']
for x in l1:
for y in l2:
(a,b)=(x,y)
当我print(a,b)
时,我得到的只是('b','d')
,但当我输入类似的代码时
for x in l1:
for y in l2:
print((x,y))
打印CCD_ 3和CCD_。为什么会发生这种情况,我该如何处理?
以下代码将为您提供所有可能的组合
l1 = ['a','b']
l2 = ['c','d']
for x in l1:
for y in l2:
(a, b) = (x, y)
print(a, b)
此外,看看的替代解决方案
from itertools import product
l1 = ['a','b']
l2 = ['c','d']
for (a, b) in product(l1, l2):
print(a, b)
执行(a,b)=(x,y)
时,会将a
的值设置为等于x
的值,将b
的值设置成等于y
的值。每次运行for循环时,a
和b
都会被淹没。另一方面,print
语句只是将这两个变量当时的值写入stdout。如果您想存储这些值以便在for循环之后使用,我建议将它们附加到列表中。
l1 = ['a','b']
l2 = ['c','d']
combinations = []
for x in l1:
for y in l2:
combinations.append((x, y))
或者,就像Roman Dryndik的回答一样,你可以使用product
函数。
简单的答案是,当您执行时
l1 = ['a','b']
l2 = ['c','d']
for x in l1:
for y in l2:
(a,b)=(x,y)
我假设您在for循环之外调用print函数(在粘贴的代码中没有显示在哪里调用它(。在您的代码中,a和b的值在每次迭代中都会被重新分配,所以当您在for循环之后调用它时,它只会打印a和b最后被分配给的内容。
当你这样做的时候:
l1 = ['a','b']
l2 = ['c','d']
for (a, b) in product(l1, l2):
print(a, b)
您在for循环中调用了print函数。这意味着它在每次迭代中都会达到,因此它将在每次迭代期间打印a和b的值是有意义的。