• python基础 简单的疑难问题解决


    lis = [11,22,33,44,55]
    for i in range(len(lis)):
        print(i)       # i = 0              i = 1               i = 2
        del lis[i]
        print(lis)  #  [11,22,33,44,55]   [22, 44, 55]          [22, 44]
    
    '''
        del lis[i]
    IndexError: list assignment index out of range
    报错原因:因为列表删除完成后更新,所以但是 循环条件len()不会因此改变,所以会报错
    解决办法:倒着删除 或者重新建立新的空列表,在新列表进行操作,或者切片
    '''
    #第一种
    lis = lis[::2]
    print(lis)
    #第二种
    l1 = []
    for i in lis:
        if lis.index(i) % 2 == 0:
            l1.append(i)
            print(lis)
    lis = l1
    print(lis)
    #第三种 倒着删
    lis = [11,22,33,44,55]
    for i in range(len(lis)-1,-1,-1):
        if i % 2 == 1:
            print(i)
            del lis[i]
    print(lis)

    函数fromkeys()

    dic = dict.fromkeys([1,2,3],[])
    print(dic)  # {1: [], 2: [], 3: []}
    dic[2].append('yuan')
    print(dic)
    dic[2] = '小小'
    print(dic)
    dic[1].extend('瓜子')
    print(dic)
    '''
    {1: [], 2: [], 3: []}
    {1: ['yuan'], 2: ['yuan'], 3: ['yuan']}
    {1: ['yuan'], 2: '小小', 3: ['yuan']}
    {1: ['yuan', '瓜', '子'], 2: ['yuan', '瓜', '子'], 3: ['yuan', '瓜', '子']}
    
    当字典用fromkeys函数时,value都是一样的,同步改,当使用字典键索引直接改,将只改一个
    '''

    删除还有某些特定的键的字典

    for i in dic:
        if 'k' in dic:
            del[dic.index(k)]
    print(dic)
    '''改方法会出错 在for函数中,字典不能被删除,会报错
    解决方法:
    新建字典
    '''
    dic = {'k1':'v1','k2':'v2','a3':'v3'}
    dic1 = {}
    for i in dic:
        if 'k' not in i:
            dic1.setdefault(i,dic[i])
    print(dic1)
    # 或者
    #该方法为删除值为空的键值对
    data_info = {
        'account': 1,
        'remark': 2,
        'sort': '',
        'weight': '',
    }
    for key in list(data_info.keys()):
        if not data_info.get(key):
            del data_info[key]
    print(data_info)
    #删除键 中含有't'的键
    data_info = {
        'account': 1,
        'remark': 2,
        'sort': '',
        'weight': '',
    }
    for key in list(data_info.keys()):  #将date_info的键变成了一个列表才能运行
        if 't' in key:
            del data_info[key]
    print(data_info)
    
    #直接将字典进入for循环中
    for key in data_info:
        if 't' in key:
            del data_info[key]
    print(data_info)
    # 报错 RuntimeError: dictionary changed size during iteration   运行时错误:字典在迭代过程中改变了大小

    元祖的小细节

    # 元祖 若元祖只有一个元素并且不添加','那么此元素是什么类型,该元祖就是什么类型
    tu1 = (1)
    tu2 = (1,)
    print(tu1,type(tu1))
    print(tu2,type(tu2))
    '''
    1 <class 'int'>
    (1,) <class 'tuple'>
    '''
  • 相关阅读:
    java类型转换
    JVM内存各个区域分工简单介绍
    用数组实现栈
    一些关于Spring的随笔
    设计模式学习笔记(三)之静(动)态代理模式、适配器模式
    浅谈经典排序算法
    PetStore项目总结
    设计模式学习笔记(二)之观察者模式、装饰者模式
    Spring的校验(Validator)
    设计模式学习笔记(一)之工厂模式、单例模式
  • 原文地址:https://www.cnblogs.com/hello-boy/p/10146222.html
Copyright © 2020-2023  润新知