关于Python列表结果的困惑

时间:2016-10-30 21:35:10

标签: python

以下是代码:

a=[1,2,3]
a[1]=10,20,30
print a
a[1:2]=10,20,30
print a
a[1:2]=[10,20,30]
print a

结果是:

[1, (10, 20, 30), 3]
[1, 10, 20, 30, 20, 30]
[1, 10, 20, 30, 20, 30, 3]

谁能告诉我发生了什么?

2 个答案:

答案 0 :(得分:4)

您应该查看slicing notation。简而言之,您的第一个操作创建了一个列表。你的第二个操作在索引1处插入了一个元组。你的第三个操作用一个元组的内容替换了一个列表切片,而第四个操作用另一个列表的内容替换了一个列表切片。

答案 1 :(得分:2)

a=[1,2,3]
print a
a[1]=10,20,30  # add a tuple at position 1
print a  
a[1:2]=10,20,30 #replaces tuple and inserts 10,20,30 at position 1
print a  
a[1:2]=[10,20,30] #now a[1:2] is 10 so this replaces 10 and inserts 10,20,30 at position 1 
print a 

<强>输出

[1, 2, 3]
[1, (10, 20, 30), 3]
[1, 10, 20, 30, 3]
[1, 10, 20, 30, 20, 30, 3]

注意:最后永远不会有30。 希望这会有所帮助。