冒泡泡de可乐
代码都是思想和概念的体现~每多学一点知识,就能少写一行代码~
posts - 80,comments - 1,views - 31997

   列表的内存自动管理功能,在删除列表中的元素时,python会自动对列表内存进行收缩,并移动列表中的元素以保证元素之间没有间隙,所以使用

      “循环+remove()方法”来删除列表中元素时会出现元素错位

#删除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]
复制代码

 

字符串的值是不能改变的,所以字符串和list情况不同

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

 

posted on   HathawayLee  阅读(1462)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示