尝试为任意数量的模具辊生成所有值的python列表。为什么每个值都附加到返回列表中的多个索引中?

尝试为任意数量的模具辊生成所有值的python列表。为什么每个值都附加到返回列表中的多个索引中?,python,list,python-3.x,probability,Python,List,Python 3.x,Probability,这是我试图创建一个函数来生成x骰子掷骰的每个结果。在main函数中生成的第一个列表是[[1]、[2]、[3]、[4]、[5]、[6]],而复制的列表是该数字顺序重复6次的列表。将1添加到第一个第六个,将2添加到第二个第六个,依此类推,将生成一个列表,其中包含滚动2个(或更多)模具的每个结果 #适用于骰子上任意数量的边 #用于扩展列表以包含额外的骰子。1所需的项目 #骰子是6,2骰子是36,以此类推。 def复制(x,y): 新的_lst=[] 对于范围(y)中的i: 对于x中的k: 新增附加(k

这是我试图创建一个函数来生成x骰子掷骰的每个结果。在main函数中生成的第一个列表是[[1]、[2]、[3]、[4]、[5]、[6]],而复制的列表是该数字顺序重复6次的列表。将1添加到第一个第六个,将2添加到第二个第六个,依此类推,将生成一个列表,其中包含滚动2个(或更多)模具的每个结果

#适用于骰子上任意数量的边
#用于扩展列表以包含额外的骰子。1所需的项目
#骰子是6,2骰子是36,以此类推。
def复制(x,y):
新的_lst=[]
对于范围(y)中的i:
对于x中的k:
新增附加(k)
返回新的\u lst
#特别适用于6面模具
def表中的可能性(x):
或_lst=[]
对于范围(6)内的l:
或附加([l+1])
如果x>1:
对于范围(x-1)内的k:
lst=复制(或lst,6)
长度=长度(lst)
打印(lst)
#此列表看起来很好,[1]、[2]、[3]、[4]、[5]、[6]的列表重复了6次
对于范围内的i(长度):
如果i<长度/6:
lst[i].追加(1)
elif i<长度/3:
lst[i].追加(2)
elif i<长度/2:
lst[i].追加(3)
elif i<长度*2/3:
lst[i].追加(4)
elif i<长度*5/6:
lst[i].追加(5)
其他:
lst[i].追加(6)
返回lst
打印(可能性表(2))
#最终列表为较早打印的列表,每个列表中有1,2,3,4,5,6

如果您可以在列表中处理元组,那么建议使用itertools.product就足够了:

from itertools import product

myList = list(product(range(1,7), repeat=2)) # the second argument can be however
                                            # many die you want to roll.
print myList
在python 2.7(我正在使用的)中,返回:

[(1,1)、(1,2)、(1,3)、(1,4)、(1,5)、(1,6)、(2,1)、(2,2)、(2,3)、(2,6)、(3,1)、(3,2)、(3,3)、(3,4)、(3,5)、(3,6)、(4,1)、(4,2)、(4,4)、(4,5)、(4,6)、(5,1)、(5,2)、(5,3)、(5,5,6)、(6,1)、(6,5)、(6)]

更多信息可在此处找到:

我不是100%确定您想要做什么,但是您可以使用
itertools
itertools.product(范围(1,7),repeat=x)生成所有模具辊。
这不正是您想要做的,将每个蓝色附加到返回列表中的每个索引吗?不清楚你在问什么。你能告诉我们你的预期产量和你得到的产量吗?代码返回这段代码的返回代码是:返回代码返回这段代码的:[[1,1,1,2,2,2,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,4,5,5,6,5,5,6,(4,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,4,4,4,4,4,4,],重复了4次,而我希望它是[[1,1]、[2,1]、[3,1]、[4,1]、[5,1]、[6,1]、[1,2]、[2,2]等等。谢谢!我仍然想知道为什么我的原始代码不起作用,但这解决了我的问题。
from itertools import product

myList = list(product(range(1,7), repeat=2)) # the second argument can be however
                                            # many die you want to roll.
print myList