day05 循环列表删除、深拷贝和浅拷贝、非空即真、非零即真

1)循环时删除列表中数据、深拷贝和浅拷贝

l1=[1,1,2,4]

for i in l1:
if i%2!=0:
l1.remove(i)


print(l1)

结果:[1, 2, 4]
按照预期结果应该是[2,4],但是实际不是,是因为循环删除数据的时候,导致下标错误,在删除第一个1之后,后面的1下标前移到第0个元素,所以删除不掉。结论:循环的时候不要删List中的元素,容易导致错位。如果想删除list中的两个1,可以使用一下程序
l1=[1,1,2,4]
l2=[1,1,2,4] #深拷贝,深拷贝会生成新的地址,浅拷贝不会
# l2=l1 浅拷贝

for i in l2:
if i%2!=0:
l1.remove(i)

print(l1)
2)通过模块使用深拷贝和浅拷贝
import  copy

l1={2,3.5}

l2=copy.deepcopy(l1) #深拷贝

l3=l1.copy() #浅拷贝

3)非空即真,非零即真
a.非空即真
name=input("输入name:").strip()
if name: # 当name的值为非空时,if判断为真True,当name 值为空时,if判断为False
print("输入正确")
else:
print("输入错误")

b.非零即真
name=int(input("输入name:"))
if name: # 当name的值为非零时,if判断为真True,当name 值为零时,if判断为False
print("输入正确")
else:
print("输入错误")


原文地址:https://www.cnblogs.com/zzzao/p/9637756.html