list循环

l=[1,1,1,2,3,4,5]
for i in l:
    if i%2!=0:
        l.remove(i)
print(l)

循环的时候还是采用下标循环,remove删除元素
i=1 l.remove(1)=1 l=[X,1,1,2,3,4,5]
i=1,l.remove(1)=1 l=[X,1,X,2,3,4,5]
i=3, l.remove(3)=3 l=[X,1,X,2,X4,5]
i=5,l.remove(4)=5 l=[X,1X,2,X,4]
这里写图片描述这种循环的list容易导致删错错乱
如果`再增加一个l1则会出现另外一种情况删除元素为基数的元素

l=[1,1,1,2,3,4,5]
l1=[1,1,1,2,3,4,5]
for i in l1:
    if i%2!=0:
        l.remove(i)
print(l)

这里写图片描述

l=[1,1,1,2,3,4,5]
# 0,1,2,3,4,5,6
l1=l
for i in l1:
    if i%2!=0:
        l.remove(i)
print(l)

l1=l是一种浅拷贝,实际数据内存地址还是指向l对应的数据内存地址
这里写图片描述
以上3这种情况,看似一样,实则差别很大。可以用print(id(l))来查看内存地址会发现第二种方式内存地址不一样。
还存在一种深拷贝(内存地址会改变):

import copy
l=[1,1,1,2,3,4,5]
# 0,1,2,3,4,5,6
l1=copy.deepcopy(l)
for i in l1:
    if i%2!=0:
        l.remove(i)
print(l)
print(id(l))
print(id(l1))

列表循环式:

res=[i for i  in range(10)]
res=[str(i).zfill(2) for i in range(1,34)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值