基础数据补充

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

 





以上是关于基础数据补充的主要内容,如果未能解决你的问题,请参考以下文章

vs 2010代码片段

vs 2010代码片段

Python之第七天的努力--基础数据类型补充,编码进阶

Python之第七天的努力--基础数据类型补充,编码进阶

js常用代码片段

26个jQuery代码片段使用技巧