python - 带有 itertools.product 的嵌套循环仅运行 1 次
问题描述
我这里有点问题。我正在尝试制作一个嵌套循环,但第二个循环只运行一次。
这是代码:
def solver(numbers, gleichung_list = [], temp = []):
perm = itertools.permutations(numbers)
permlist = [list(y) for y in perm]
oper = itertools.product(['+', '-', '*', '/'], repeat=len(numbers)-1)
for gleichung in permlist:
print(gleichung)
for ops in oper:
print(ops)
temp = [None] * (len(numbers)*2-1)
temp[::2] = list(gleichung)
temp[1::2] = list(ops)
print(temp)
print(ops)
numbers = [1, 2]
solver(numbers)
但是当我运行它时,这就是我得到的:
[1, 2]
('+',)
[1, '+', 2]
('+',)
('-',)
[1, '-', 2]
('-',)
('*',)
[1, '*', 2]
('*',)
('/',)
[1, '/', 2]
('/',)
[2, 1]
为什么第二个循环不运行?
解决方案
该product()
函数返回一个迭代器而不是一个列表,因此您的嵌套循环在此迭代器上运行一次,然后就没有更多的项目了。在您的第一个循环之前添加oper = list(oper)
以纠正此问题。
推荐阅读
- spring - Smack :是否有可能在用户在聊天中编写消息时获取他编写的消息?
- sql - 动态更新 Postgres SQL Json 字段中的多个键
- jquery - 如何多次动态更新数据属性
- kubernetes - 集群上活跃的内容与 kustomize 之间的差异
- xamarin - How to set all the item template data into a single view in Xamarin Carousel
- python - iam django 中的新功能,静态文件未在浏览器上加载,仅图像加载 css,js 未加载
- c - 面试题:两个整数相等的最长前缀
- python - 我在 windows10 上的 anaconda 无法识别 levenshtein 模块
- wordpress - 如何从 WordPress 仪表板启用和禁用外观
- jwt - 添加声明以访问令牌密钥斗篷