python 子列表合并,没有进行赋值操作,为什么值会变化?

python 子列表合并,没有进行赋值操作,为什么值会变化?

l = [['a','b',1], ['a','c',2], ['a','b',3], ['a','c',4], ['a','b',5]]

L = []

for i in range (len(l)):

flag = True

for j in range(len(L)):

if L[j][:-1] == l[i][:-1]:

flag = False

z=j

break

if flag == True:

L.append(l[i])

else:

L[z][-1] = L[z][-1] + l[i][-1]

print('l: ')

print(l)

print('L: ')

print(L)

输出为:

l:

[['a', 'b', 1], ['a', 'c', 2], ['a', 'b', 3], ['a', 'c', 4], ['a', 'b', 5]]

L:

[['a', 'b', 1]]

l:

[['a', 'b', 1], ['a', 'c', 2], ['a', 'b', 3], ['a', 'c', 4], ['a', 'b', 5]]

L:

[['a', 'b', 1], ['a', 'c', 2]]

l:

[['a', 'b', 4], ['a', 'c', 2], ['a', 'b', 3], ['a', 'c', 4], ['a', 'b', 5]]

L:

[['a', 'b', 4], ['a', 'c', 2]]

l:

[['a', 'b', 4], ['a', 'c', 6], ['a', 'b', 3], ['a', 'c', 4], ['a', 'b', 5]]

L:

[['a', 'b', 4], ['a', 'c', 6]]

l:

[['a', 'b', 9], ['a', 'c', 6], ['a', 'b', 3], ['a', 'c', 4], ['a', 'b', 5]]

L:

[['a', 'b', 9], ['a', 'c', 6]]

我想实现的是,把子列表中前两个字符相同的合并,最后一位的值相加,放到新列表中
但是我没有给l赋值,为什么l列表里的值也变了呢


回答:

l = [['a', 'b', 1], ['a', 'c', 2], ['a', 'b', 3], ['a', 'c', 4], ['a', 'b', 5]]

L = []

for i in range(len(l)):

flag = True

for j in range(len(L)):

if L[j][:-1] == l[i][:-1]:

flag = False

z = j

break

if flag:

L.append(l[i][:])

else:

L[z][-1] += l[i][-1]

# 输出测试结果

l, L

以上是 python 子列表合并,没有进行赋值操作,为什么值会变化? 的全部内容, 来源链接: utcz.com/p/939119.html

回到顶部