基础数据补充
Posted sandy-123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础数据补充相关的知识,希望对你有一定的参考价值。
列表不能循环添加 会变成死循环
列表使用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]]
以上是关于基础数据补充的主要内容,如果未能解决你的问题,请参考以下文章