Python列表分配问题

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-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):
        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)