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'> '''