如何遍历一系列固定列表中的所有可能值?
(python)
我有以下的值和列表:
name = colour
size = ['256', '512', '1024', '2048', '4096', '8192', '16384', '32768']
depth = ['8', '16', '32']
scalar = ['False', 'True']
alpha = ['False', 'True']
colour = app.Color(0.5)
我想要遍历这些值,生成每一种可能的组合,结构如下:
createChannel(ChannelInfo(name, size, depth, scalar, alpha, colour))
也就是说,名字、大小等的值必须保持在同一个位置,但它们需要遍历所有可能的大小、深度等组合。
换句话说,我想要得到类似这样的结果:
createChannel(ChannelInfo('colour', 256, 8, False, True, 0.5)
createChannel(ChannelInfo('colour1', 256, 8, False, False, 0.5)
createChannel(ChannelInfo('colour2', 256, 16, False, False, 0.5)
……等等……总共有96种组合
谢谢
3 个回答
0
我最近也遇到了同样的需求。我从这里借用了一个交叉乘积的函数。
def cross(*sequences):
# visualize an odometer, with "wheels" displaying "digits"...:
wheels = map(iter, sequences)
digits = [it.next() for it in wheels]
while True:
yield tuple(digits)
for i in range(len(digits)-1, -1, -1):
try:
digits[i] = wheels[i].next()
break
except StopIteration:
wheels[i] = iter(sequences[i])
digits[i] = wheels[i].next()
else:
break
你只需要给它一组列表,它就会返回一个生成器,按照你上面指定的方式进行迭代。
1
from itertools import product
# generates all the possible values
combinations = product(size, depth, scalar, alpha)
# call the function for each combination
# i guess `names` is a list of 96 names ..
items = [createChannel(ChannelInfo(name, *row))
for name, row in zip(names, combinations)]
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
7
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们写的代码有bug,或者是因为我们没有正确理解某些概念。解决这些问题的第一步就是要仔细检查代码,看看有没有拼写错误、语法错误或者逻辑错误。
另外,了解一些基本的编程概念也很重要,比如变量、循环和条件判断。这些都是编程的基础,掌握了它们,你就能更好地理解代码是如何工作的。
如果你在编程过程中遇到困难,不妨去网上查找相关的资料或者向其他人请教。很多时候,别人遇到过类似的问题,他们的经验可能会帮助你更快地找到解决方案。
总之,编程是一项需要不断学习和实践的技能,遇到问题时不要气馁,耐心寻找解决办法,你会越来越熟练的。
import itertools
for iter in itertools.product(size, depth, scalar, alpha):
print iter # prints 96 four-element tuples