zoukankan      html  css  js  c++  java
  • 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("输入错误")


  • 相关阅读:
    Linux
    CUDA开发
    Linux C++
    Python
    C++
    模式识别
    Linux
    算法
    算法
    leetcode 数组,链表,跳表
  • 原文地址:https://www.cnblogs.com/zzzao/p/9637756.html
Copyright © 2011-2022 走看看