Python 如何创建从(0,0,0)到(2,2,2)的元组,其中条目最多为2?

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),(

在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,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是的,有区别。你打败了我!你跑得太快了