zoukankan      html  css  js  c++  java
  • 基础数据补充

    列表不能循环添加 会变成死循环
    列表使用for循环删除元素 for循环机制会导致有些操作删不干净:

    li = [1,2,3,4,5]
    for i in li:
        li.remove(i)
    print(li)
    
    结果:
    [2,4]
    #remove在删除的时候,后边的数字会补位到前一位,导致删除不干净
    li = [1,2,3,4,5]
    for i in li:
        li.pop()
    print(li) 
    
    结果:
    [1, 2]
    
    #循环到3的时候,后边的元素已经删除了,没有办法继续循环

    列举几种可以实现清空列表的方法:

    li = [1,2,3,4,5]
    for i in range(len(li)): 
        li.pop()
    print(li)
    
    结果:
    []
    li = [1,2,3,4,5]  
    l2 = []
    for i in li:
        l2.append(i)
    for j in l2:
        li.remove(j)
    print(li)
    
    结果:
    []
    
    #定义一个空列表,利用偷换概念的方法进行清空
    li = [1,2,3,4,5]
    for i in li:
        li.clear()           
    print(li)
    
    结果:
    []
    #clear可以很容易的清空列表

    字典删除元素 字典在for循环的时候 不能修改:

    dic = {'1':22,'5':'22'}
    lst = []
    for i in dic:
        lst.append(i)   
    for j in lst:
        dic.pop(j)
    print(dic)
    
    结果:
    {}
    
    #同样适用偷换概念的方法

    fromkeys:

    结构是dict.fromkeys('可迭代对象','值')

    第一个位置是可迭代对象,也就是字典的键
    第二个位置 不写是None 也就是字典的值
    dic = dict.fromkeys('1234','你好')
    print(dic)
    
    dic['2'] = '明天'   
    print(dic)
    
    dic['3'] = [5,6,7]
    print(dic)
    
    结果:
    {'1': '你好', '2': '你好', '3': '你好', '4': '你好'}
    {'1': '你好', '2': '明天', '3': '你好', '4': '你好'}
    {'1': '你好', '2': '明天', '3': [5, 6, 7], '4': '你好'}

    当fromkeys当中添加的值是可变数据类型,当改变这个可变数据类型时,所有键对应的值都要改变:

    dic = dict.fromkeys('你好啊',[1,2,3])
    print(dic)
    dic[''].append(99)
    print(dic)
    
    结果:
    {'': [1, 2, 3], '': [1, 2, 3], '': [1, 2, 3]}
    {'': [1, 2, 3, 99], '': [1, 2, 3, 99], '': [1, 2, 3, 99]}

    深浅拷贝:

    浅拷贝: 只拷贝第一层元素,元素是不可变的就不会变,元素是可变的,两个都会变

    li = [1,2,3,4]
    lst = li.copy()
    print(li)
    print(lst)
    
    li[0] = 6
    print(li)   
    print(lst)
    
    结果:
    [1, 2, 3, 4]
    [1, 2, 3, 4]
    
    [6, 2, 3, 4]
    [1, 2, 3, 4]

    #当li的元素改变是,lst不变
    li = [1,2,3,4,[5,6,7]]   
    lst = li.copy()
    print(li)
    print(lst)
    
    li[-1].append(90)
    print(li)   
    print(lst)  
    
    结果:
    [1, 2, 3, 4, [5, 6, 7]]
    [1, 2, 3, 4, [5, 6, 7]]
    
    [1, 2, 3, 4, [5, 6, 7, 90]]
    [1, 2, 3, 4, [5, 6, 7, 90]]
    #列表中包含可变数据列表,当li改变时,lst也会变

    深拷贝: 不可变数据类型公用,可变数据类型重新开辟空间    import copy模块:

    import copy
    li = [1,2,3,4,[5,6,7]]
    lst = copy.deepcopy(li) 
    print(li)
    print(lst)
    
    li[-1].append(90)
    print(li)   
    print(lst)
    
    结果:
    [1, 2, 3, 4, [5, 6, 7]]
    [1, 2, 3, 4, [5, 6, 7]]
    
    [1, 2, 3, 4, [5, 6, 7, 90]]
    [1, 2, 3, 4, [5, 6, 7]]
  • 相关阅读:
    SSRS中加入书签功能及数据集窗口
    Oracle 语法
    DOM基本操作
    文字横向滚动和垂直向上滚动
    offsetWidth和width的区别
    css3动画(animation)效果3-正方体合成
    css3动画(animation)效果2-旋转的星球
    css3动画(animation)效果1-漂浮的白云
    JavaScript 错误监控Fundebug
    第二篇:git创建流程
  • 原文地址:https://www.cnblogs.com/sandy-123/p/10221696.html
Copyright © 2011-2022 走看看