Skip to main content
 首页 » 编程设计

python之for 循环不正确循环

2025年05月04日15insus

这可能是一个简单的问题,但我的代码只在末尾执行外部 for 循环,并在开头执行一次。它应该遍历每个数字组合的每个组合

from itertools import permutations as p                                                                                                               
combos = p(['/','*','-','+'], 3)                                                                                           
numbers = p(['9','7','7','6'])                                                                                                                        
for y in numbers:                                                                                                                                     
    print(y)                                                                                                                                          
    for x in combos:                                                                                                            
        print(x)                                                                                                                                      

我做错了什么?它输出:

('9', '7', '7', '6') 
('/', '*', '-') 
('/', '*', '+') 
('/', '-', '*') 
('/', '-', '+') 
('/', '+', '*') 
('/', '+', '-') 
('*', '/', '-') 
('*', '/', '+') 
('*', '-', '/') 
('*', '-', '+') 
('*', '+', '/') 
('*', '+', '-') 
('-', '/', '*') 
('-', '/', '+') 
('-', '*', '/') 
('-', '*', '+') 
('-', '+', '/') 
('-', '+', '*') 
('+', '/', '*') 
('+', '/', '-') 
('+', '*', '/') 
('+', '*', '-') 
('+', '-', '/') 
('+', '-', '*') 
('9', '7', '6', '7') 
('9', '7', '7', '6') 
('9', '7', '6', '7') 
('9', '6', '7', '7') 
('9', '6', '7', '7') 
('7', '9', '7', '6') 
('7', '9', '6', '7') 
('7', '7', '9', '6') 
('7', '7', '6', '9') 
('7', '6', '9', '7') 
('7', '6', '7', '9') 
('7', '9', '7', '6') 
('7', '9', '6', '7') 
('7', '7', '9', '6') 
('7', '7', '6', '9') 
('7', '6', '9', '7') 
('7', '6', '7', '9') 
('6', '9', '7', '7') 
('6', '9', '7', '7') 
('6', '7', '9', '7') 
('6', '7', '7', '9') 
('6', '7', '9', '7') 
('6', '7', '7', '9') 

请您参考如下方法:

itertools.permutations 产生一个迭代器。这意味着它可以被消耗掉。一旦消耗,后续循环将跳过它。如果将其转换为列表,您将继续访问其成员。

from itertools import permutations as p 
combos = list(p(['/','*','-','+'], 3)) 
numbers = list(p(['9','7','7','6'])) 
for y in numbers: 
    print(y) 
    for x in combos: 
        print(x)