1.list循环里面改变list
list循环中remove:
if __name__=='__main__':
list = [1,2,3,7,5,6,4]
for ele in list:
if ele == max(list):
list.remove(ele)
print(ele)
print(list)
运行结果如下:
1
2
3
7
6
[1, 2, 3, 5, 4]
可以看出来,在循环中remove之后,在循环到下一个元素的时候,remove出去的元素后面的元素会移动到该元素的地址上,之后的元素一一往前递补,然而循环时是按照地址循环,所以遍历时会跳过remove的元素之后的第一个元素
2.list 赋值
直接贴代码和运行结果,即可看出区别
if __name__=='__main__':
list=[1,2,3]
list1= list
list1[2]=4
print(list1)
print(list)
list2 = list.copy()
list2[2]=3
print(list2)
print(list)
运行结果如下:
[1, 2, 4]
[1, 2, 4]
[1, 2, 3]
[1, 2, 4]
可看出若需要改变被赋值的list而不改变原list,赋值时需要添加.copy(),否则两个list会指向同一地址,改变任意一个都会引起另一个改变
3.append与extend区别
下面代码可体现区别
if __name__=='__main__':
list = [[1,2,3],[2,3,4]]
list1= [[1,2,3],[2,3,4]]
list2= [[3,4,5],[4,5,6]]
list.append(list2)
list1.extend(list2)
print(list)
print(list1)
运行结果如下:
[[1, 2, 3], [2, 3, 4], [[3, 4, 5], [4, 5, 6]]]
[[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]]
从append和extend单词的字面意思其实也能体现,一个是作为元素追加,一个是扩展延长
4.list嵌套
if __name__==<