Python列表分配问题
此代码的目标是将内部列表的第一个索引包含的值0-3分配给外部列表中的所有值。Python列表分配问题,python,list,variable-assignment,Python,List,Variable Assignment,此代码的目标是将内部列表的第一个索引包含的值0-3分配给外部列表中的所有值。 [[0,0,0,0],[1,0,0,0],[2,0,0,0],[3,0,0,0,0],[0,0,0,0]]等等。由于某种原因,作业根本不起作用。提前谢谢 附加列表的副本,而不是列表本身 #DeckOfCards deck = [] filler= [0, 0, 0, 0] def deck_generator(): counter = 0 for i in range (52):
[[0,0,0,0],[1,0,0,0],[2,0,0,0],[3,0,0,0,0],[0,0,0,0]]等等。由于某种原因,作业根本不起作用。提前谢谢 附加列表的副本,而不是列表本身
#DeckOfCards
deck = []
filler= [0, 0, 0, 0]
def deck_generator():
counter = 0
for i in range (52):
counter += 1
deck.append(filler)
return deck
def deck_values(i):
k = 4
temp = (i + 1) % k
return temp
deck = deck_generator()
for i in range(52):
deck[i][0] = deck_values(i)
试试这个
deck.append(filler[:])
运行此代码将打印(编辑以便于查看):
是否确实要获取[[0,0,0,0]、[1,0,0,0]、[2,0,0,0]、[3,0,0,0,0]、[0,0,0] 首先,您应该使用filter的副本,然后您可以得到如下列表:
[1,0,0,0],[2,0,0,0],[3,0,0,0,0],[0,0,0],…] 但是如果你想得到结果[[0,0,0,0],[1,0,0,0],[2,0,0,0],[3,0,0,0],…] 您的代码应该是这样的:
甲板=[]
[[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0],
[0, 0, 0, 0], [1, 0, 0, 0], [2, 0, 0, 0], [3, 0, 0, 0]]
我认为它的问题是temp=(I+1)%k,因为我们不需要将1与1相加。它应该从0开始。除此之外,您还需要正确地追加以使其正常工作。代码如下所示:
filler= [0, 0, 0, 0]
def deck_generator():
counter = 0
for i in range (52):
counter += 1
deck.append(filler[:])
return deck
def deck_values(i):
k = 4
temp = i % k #not temp = (i+1) % k
return temp
deck = deck_generator()
for i in range(52):
deck[i][0] = deck_values(i)
print(deck)
您添加了52次
filler
filler。您不插入它,而是替换看起来非常非常相似的一行代码。
filler= [0, 0, 0, 0]
def deck_generator():
counter = 0
for i in range (52):
counter += 1
deck.append(filler[:])
return deck
def deck_values(i):
k = 4
temp = i % k #not temp = (i+1) % k
return temp
deck = deck_generator()
for i in range(52):
deck[i][0] = deck_values(i)
print(deck)
#DeckOfCards
deck = []
filler= [0, 0, 0, 0]
def deck_generator():
counter = 0
for i in range (52):
counter += 1
deck.append(filler[:])
return deck
def deck_values(i):
k = 4
temp = (i) % k
return temp
deck = deck_generator()
for i in range(52):
deck[i][0] = deck_values(i)