python中list相关的BUG记录

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__==<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值