Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 嵌套循环组合_Python_Loops_Iterator_Combinations - Fatal编程技术网

Python 嵌套循环组合

Python 嵌套循环组合,python,loops,iterator,combinations,Python,Loops,Iterator,Combinations,对组合进行迭代不会给出预期的迭代次数。为了说明我的问题: import itertools combinations = itertools.combinations(range(10), 1) # The combination has 10 elements # Test1 count = 0 for c1 in combinations: for c2 in combinations: count += 1 print("Test1:", c

对组合进行迭代不会给出预期的迭代次数。为了说明我的问题:

import itertools

combinations = itertools.combinations(range(10), 1) # The combination has 10 elements

# Test1
count = 0
for c1 in combinations:
    for c2 in combinations:
        count += 1
print("Test1:", count)

# Test2
combinations1 = itertools.combinations(range(10), 1)
combinations2 = itertools.combinations(range(10), 1)

count = 0
for c1 in combinations1:
    for c2 in combinations2:
        count += 1
print("Test2:", count)

# Test3
combinations1 = list(itertools.combinations(range(10), 1))
combinations2 = list(itertools.combinations(range(10), 1))

count = 0
for c1 in combinations1:
    for c2 in combinations2:
        count += 1
print("Test3:", count)
我正在迭代10个元素的组合。对于双嵌套循环,我期望100次迭代(10x10)。然而,我得到了以下结果:

Test1: 9
Test2: 10
Test3: 100
我可以理解
Test1
不能正常工作,因为我对两个循环使用相同的对象。但是,我希望
Test2
Test3
都能产生相同的结果,因为唯一的区别是我首先在
Test3
中将迭代器对象转换为列表


如果您能就这个问题做出任何解释,我将不胜感激。我在Ubuntu 20.04中使用Python 3.8.2。

在第二种情况下,您只能迭代组合2一次。这可以通过在以下内容中添加一些
print
s来演示:

count = 0
for c1 in combinations1:
    print("Outer")
    for c2 in combinations2:
        print("inner")
        count += 1
print("Test2:", count)

Outer
inner
inner
inner
inner
inner
inner
inner
inner
inner
inner
Outer
Outer  <-- Noteworthy
Outer
Outer
Outer
Outer
Outer
Outer
Outer
Test2: 10
count=0
对于组合1中的c1:
打印(“外部”)
对于组合2中的c2:
打印(“内部”)
计数+=1
打印(“Test2:”,计数)
外面的
内部的
内部的
内部的
内部的
内部的
内部的
内部的
内部的
内部的
内部的
外面的
外面的