Python 如何创建从(0,0,0)到(2,2,2)的元组,其中条目最多为2?
在Python中,我想创建一个元组的元组,范围从Python 如何创建从(0,0,0)到(2,2,2)的元组,其中条目最多为2?,python,Python,在Python中,我想创建一个元组的元组,范围从(0,0,0)到(2,2,2),条目最多为2。也就是说,我想制作((0,0,0,0,1),(0,0,2),(0,1,0),(0,1,1),(0,1,2),(0,2,0),…,(2,1,2),(2,2,0),(2,2,1),(2,2,2)) 但这必须涵盖一般情况。计算机必须在给定任意两个非负整数时自动执行此操作,一个表示每个元组的长度,另一个表示每个元组的最大项。例如,如果我给2作为每个元组的长度,给1作为最大条目,那么计算机应该产生((0,0),(
(0,0,0)
到(2,2,2)
,条目最多为2。也就是说,我想制作((0,0,0,0,1),(0,0,2),(0,1,0),(0,1,1),(0,1,2),(0,2,0),…,(2,1,2),(2,2,0),(2,2,1),(2,2,2))
但这必须涵盖一般情况。计算机必须在给定任意两个非负整数时自动执行此操作,一个表示每个元组的长度,另一个表示每个元组的最大项。例如,如果我给2作为每个元组的长度,给1作为最大条目,那么计算机应该产生
((0,0),(0,1),(1,0),(1,1))
。请帮我做这个。我正在使用Python 3。像这样使用itertools产品:
from itertools import product
def createListOfTuple(arr,length):
return [i for i in product(arr,repeat=length)]
print(createListOfTuple([0,1,2],3))
迪翁的反应比我快。因此,我将不得不补充更多的解释 你的问题是itertools的用途。处理可迭代项。因此,花时间阅读itertools文档将获得以下回报: 你的事业感兴趣的两个功能取决于你追求的行为:
print(tuple(itertools.combinations_with_replacement((0,1,2),3) ))
print(tuple(itertools.product((0,1,2), repeat=3)))
产品将允许0,2,2和2,2,0作为不同的序列;)
每份文件:
itertools.product(*iterables,repeat=1)输入的笛卡尔积
不可抗力
大致相当于生成器表达式中的嵌套for循环。对于
例如,乘积(A,B)返回的值与((x,y)表示A中的x表示y中的y相同
B)
嵌套循环就像最右边元素的里程表一样循环
在每一次迭代中前进。这种模式创建了一个词典
排序,以便在对输入的iterables进行排序后,产品
元组按排序顺序发出
要计算iterable与自身的乘积,请指定数字
使用可选的repeat关键字参数重复的次数。例如
产品(A,重复=4)表示与产品(A,A,A,A)相同
(0,2,2)和(2,2,0)有区别吗?@PraysonW.Daniel是的,有区别。你打败了我!你跑得太快了