Python中的随机双重循环

3
我想在Python中创建一个随机的双重循环。
例如,对于 (N,N)=(2,2),该程序应该给出:
0 1
0 0
1 1
1 0

或者另一个例子

0 0
1 1
1 0
0 1

到目前为止,我已经完成了这个任务:

r1 = list(range(2))
r2 = list(range(2))
random.shuffle(r1)
random.shuffle(r2)
for i in r1:
    for j in r2:
        # Do something with i

然而,这并没有得到期望的结果,因为我也想将i's洗牌,而不是例如依次给出所有(1,x)。 有任何想法吗?

先创建所有的输出,然后再进行洗牌。 - Primusa
1个回答

5

对范围的乘积进行洗牌,而不是每个范围单独洗牌。

import itertools


pairs = list(itertools.product(r1, r2))  # [(i,j) for i in r1 for j in r2]
random.shuffle(pairs)

for i, j in pairs:
    ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接