zoukankan      html  css  js  c++  java
  • python中循环删除list和dict类型注意事项

    列表和字典在循环操作(增删)时,其长度会改变

    # 删除 li = [11, 22, 33, 44, 'rock']中索引为单数的元素
    # 方法一
    del li[1::2]
    print(li)   # [11, 33, 'rock']
    
    # 方法二
    new_li = []
    for index in range(len(li)):
        print(index)
        if index % 2 == 0:
            new_li.append(li[index])
    li = new_li
    print(li)
    
    # 方法三
    # 取首不取尾
    for index in range(len(li)-1, 0-1, -1):
        print(index)
        if index % 2 != 0:
            li.pop(index)
    print(li)
    
    # 错误示例
    for index in range(len(li)):
        print(index)
        if index % 2 != 0:
            li.pop(index)
    print(li)
    # 删除 dic = {'k1': 1, 'k2': 1, 'k3': 1, 'name': 'rock'}中所有包含k字母的键值对
    
    # dict字典在循环时不能改变字典的长度,即不能增删改查字典中的元素
    dic = {'k1': 1, 'k2': 1, 'k3': 1, 'name': 'rock'}
    li = []
    for key in dic.keys():
        if 'k' in key:
            li.append(key)
    for i in li:
        dic.pop(i)
    print(dic)  # {'name': 'rock'}
    
    # 错误示例 RuntimeError: dictionary changed size during iteration
    for key in dic.keys():
        if 'k' in key:
            dic.pop(key)
    print(dic)
    
    for key in dic.keys():
        print(key[0])
        if key[0] == 'k':
            dic.pop(key)
    print(dic)
  • 相关阅读:
    .NET Cache缓存
    异步
    es6常用功能
    vue-router路由懒加载
    vue中nextTick和$nextTick
    动态模板中 swiper 划不动问题
    javaScript正则判断手机号
    Mac终端使用技巧
    alert IOS自带域名
    vue css background路径不对
  • 原文地址:https://www.cnblogs.com/chen55555/p/10178325.html
Copyright © 2011-2022 走看看