我在试着练习做一个方法
s = '132'
lis = list(s)
result = []
lisc = lis[:]
for item in lis:
for i in range(1,len(lis)):
lisc.remove(item)
lisc.insert(i,item)
print("lis : ", lisc)
result.append(lisc)
print(result)
结果是:
lis : ['3', '1', '2']
lis : ['3', '2', '1']
lis : ['2', '3', '1']
lis : ['2', '1', '3']
lis : ['1', '2', '3']
lis : ['1', '3', '2']
[['1', '3', '2'], ['1', '3', '2'], ['1', '3', '2'], ['1', '3', '2'], ['1', '3', '2'], ['1', '3', '2']]
我不明白为什么结果会在循环中附加原来的lisc而不是修改后的lisc
我尝试了result.append(lisc[:]),它可以工作
for item in lis:
for i in range(1,len(lis)):
lisc.remove(item)
lisc.insert(i,item)
print("lis : ", lisc)
result.append(lisc[:])
print(result)
有人能回答我的问题吗
先谢谢你
在代码的第一个版本中,您附加了在每次迭代中更新的相同列表。最后,您附加的所有
lisc
都将是对同一列表的引用在第二个版本中,您将附加修改列表的新副本。这些拷贝都是不同的对象
相关问题 更多 >
编程相关推荐