python(6)——循环删除list、深拷贝和浅拷贝
2021-07-03 14:05
标签:管理功能 print 深拷贝 move 另一个 import div 目的 也会 列表的内存自动管理功能,在删除列表中的元素时,python会自动对列表内存进行收缩,并移动列表中的元素以保证元素之间没有间隙,所以使用 “循环+remove()方法”来删除列表中元素时会出现元素错位 浅拷贝 深拷贝 字符串的值是不能改变的,所以字符串和list情况不同 python(6)——循环删除list、深拷贝和浅拷贝 标签:管理功能 print 深拷贝 move 另一个 import div 目的 也会 原文地址:https://www.cnblogs.com/HathawayLee/p/9622526.html#删除list1中的奇数
ist1=[1,1,1,2,3,4,5]
for i in list1:
if i%2!=0:
list1.remove(i)
print(list1) #[1,2,4]
若要正确循环删list中的元素,定义两个相同的list。一个list用于循环,从另一个list中删除
import copy
list1=[1,1,1,2,3,4,5]
list2=[1,1,1,2,3,4,5]
for i in list2:
if i%2!=0:
list1.remove(i)
print(list1) #[2,4]
#list2=list1 相当于 list2=list1.copy(),都是浅拷贝
#list2和list1指向同一个内存地址,所以list1变了,list2也会变 ;同样不能达到正确删除list1中奇数的目的
list1=[1,1,1,2,3,4,5]
list2=list1 #浅拷贝 相当于 list1.copy()
print(id(list1)) # 2270067237960 id()取内存地址
print(id(list2)) # 2270067237960
for i in list2:
if i%2!=0:
list1.remove(i)
print(list1) #[1,2,4]
# list2=copy.deepcopy(list1) 深拷贝,list1和list2指向不同的内存地址
import copy #导入copy模块
list1=[1,1,1,2,3,4,5]
list2=copy.deepcopy(list1) #深拷贝
print(id(list1)) #2085723515720 id()取内存地址
print(id(list2)) #2085723513928
for i in list2:
if i%2!=0:
list1.remove(i)
print(list1) #[2,4]
1 a=‘cat‘ #a中保存的是cat的内存地址
2 b = a #将a中保存的内存地址赋给b,a和b指向同一块内存地址
3 a=‘dog‘ #字符串的值是不能改变的,所以重新对a赋值会在分配一块内存给dog,a指向dog的内存地址
4 print(a) #dog
5 print(b) #ca
下一篇:c++存储区域
文章标题:python(6)——循环删除list、深拷贝和浅拷贝
文章链接:http://soscw.com/index.php/essay/101295.html