在 Python 的嵌套循环中交换循环变量
Swapping Loop Variables in Nested Loop in Python
假设有 2 个列表 l1 和 l2。我想打印 x, y 对,其中 x <= y 和 x 或y 必须来自 l1,另一个必须来自 l2。
我在Python 3上写了下面的代码和运行:
l1 = [1, 5, 6]
l2 = [0, 3, 7]
for member_1 in l1:
for member_2 in l2:
if member_1 > member_2:
member_1, member_2 = member_2, member_1
print(member_1, member_2)
而且输出很奇怪:
0 1
0 3
0 7
0 5
0 3
0 7
0 6
0 3
0 7
循环变量似乎不仅仅是存储值。我错过了什么?
你改变了 member1 的值,它不会在外循环的下一次迭代之前恢复到正确的值
要解决这个问题,您可以(在很多事情中):
for member_1 in l1:
for member_2 in l2:
print(min(member_1,member_2),max(member_1,member_2))
我之前的回答没有输出 OP 最初要求的确切结果,它是:
for member_1 in l1:
for member_2 in l2:
print(sorted([member_1,member_2]))
l1 = [1, 5, 6]
l2 = [0, 3, 7]
for i in l1:
for j in l2:
if(i<=j):
print(i,j)
for j in l2:
for i in l1:
if(j<=i):
print(j, i)
产量
1 3
1 7
5 7
6 7
0 1
0 5
0 6
3 5
3 6
这是您要打印的内容吗?
使用itertools.product()
:
import itertools
l1 = [1, 5, 6]
l2 = [0, 3, 7]
print([sorted(tup) for tup in itertools.product(l1, l2)])
# [[0, 1], [1, 3], [1, 7], [0, 5], [3, 5], [5, 7], [0, 6], [3, 6], [6, 7]]
假设有 2 个列表 l1 和 l2。我想打印 x, y 对,其中 x <= y 和 x 或y 必须来自 l1,另一个必须来自 l2。
我在Python 3上写了下面的代码和运行:
l1 = [1, 5, 6]
l2 = [0, 3, 7]
for member_1 in l1:
for member_2 in l2:
if member_1 > member_2:
member_1, member_2 = member_2, member_1
print(member_1, member_2)
而且输出很奇怪:
0 1
0 3
0 7
0 5
0 3
0 7
0 6
0 3
0 7
循环变量似乎不仅仅是存储值。我错过了什么?
你改变了 member1 的值,它不会在外循环的下一次迭代之前恢复到正确的值
要解决这个问题,您可以(在很多事情中):
for member_1 in l1:
for member_2 in l2:
print(min(member_1,member_2),max(member_1,member_2))
我之前的回答没有输出 OP 最初要求的确切结果,它是:
for member_1 in l1:
for member_2 in l2:
print(sorted([member_1,member_2]))
l1 = [1, 5, 6]
l2 = [0, 3, 7]
for i in l1:
for j in l2:
if(i<=j):
print(i,j)
for j in l2:
for i in l1:
if(j<=i):
print(j, i)
产量
1 3
1 7
5 7
6 7
0 1
0 5
0 6
3 5
3 6
这是您要打印的内容吗?
使用itertools.product()
:
import itertools
l1 = [1, 5, 6]
l2 = [0, 3, 7]
print([sorted(tup) for tup in itertools.product(l1, l2)])
# [[0, 1], [1, 3], [1, 7], [0, 5], [3, 5], [5, 7], [0, 6], [3, 6], [6, 7]]