Python:将列表附加到列表

2024-06-16 10:30:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在循环中创建一个名为“temp”的列表,并将其附加到一个名为“trouble”的母亲列表中。当我在循环的第二次运行中将“temp”附加到“trouble”时,“trouble”本身似乎正在发生变化。 为了清楚起见,我简化了代码,只包含了这个实例。你知道吗

award=[[['A',1],['B',1]],[['A',1],['C',1]],[['A',1],['C',1],['D',1]]]

trouble=[]
print '\n'
for n in range(len(award)-1):
    temp=[]
    for i in range(len(award[n])):
            temp.append(award[n][i])
    for i in range(len(award[n+1])):
            for k in range(len(temp)):
            if(temp[k][0]==award[n+1][i][0]):
                temp[k][1]+=award[n+1][i][1]
                break
        else:
            temp.append(award[n+1][i])

    print 'temp', temp
    trouble.append(temp)
    print '\tn   =   ',n, '\n\ttrouble'
    for i in range(len(trouble)):
        print trouble[i]
    print '\n'

输出如下所示:

temp [['A', 2], ['B', 1], ['C', 1]]
    n   =    0 
    trouble
[['A', 2], ['B', 1], ['C', 1]]


temp [['A', 2], ['C', 2], ['D', 1]]
    n   =    1 
    trouble
[['A', 2], ['B', 1], ['C', 2]]
[['A', 2], ['C', 2], ['D', 1]]

我不明白为什么['C',1],它(据我所说)在第一次附加之后没有被碰过,在第二次附加之后被改变了。你知道吗

任何帮助都将不胜感激。你知道吗

先谢谢你。你知道吗

阿纳加·马杜苏达南


Tags: 实例代码in列表forlenifrange
1条回答
网友
1楼 · 发布于 2024-06-16 10:30:25

我认为问题的根源在于:

temp.append(award[n+1][i])

奖励[1][1]的引用已经添加了两次麻烦,因此添加任何元素,所有值都将更改。 在将列表附加到母列表中时,应该进行深度复制。你知道吗

award=[[['A',1],['B',1]],[['A',1],['C',1]],[['A',1],['C',1],['D',1]]]

trouble=[]
print '\n'
for n in range(len(award)-1):
    temp=[]
    for i in range(len(award[n])):
        tem = award[n][i][:] // deep copy
        temp.append(tem)
    for i in range(len(award[n+1])):
        for k in range(len(temp)):
            if(temp[k][0]==award[n+1][i][0]):
                temp[k][1]+=award[n+1][i][1]
                break
        else:
            tem = award[n+1][i][:] # deep copy
            temp.append(tem)

    print 'temp', temp
    trouble.append(temp)
    print '\tn   =   ',n, '\n\ttrouble'
    for i in range(len(trouble)):
        print trouble[i]
    print '\n'



# temp [['A', 2], ['B', 1], ['C', 1]]
    # n   =    0 
    # trouble
# [['A', 2], ['B', 1], ['C', 1]]


# temp [['A', 2], ['C', 2], ['D', 1]]
    # n   =    1 
    # trouble
# [['A', 2], ['B', 1], ['C', 1]]
# [['A', 2], ['C', 2], ['D', 1]]

相关问题 更多 >