Python里面 list相关操作(适合新手)

Python里面 list相关操作

#列表的相关操作(为方便查看操作效果,每次操作前,对操作的列表重新赋值)
# 1.定义列表 2中方式
list_m1=[] # 定义列表的方法1 
list_m2=list()# 定义列表的方法2 

# list 里面的增,删,改,查
list_m1=[1,3,5,7,9]
list_m1.append(6) # list 里面增加元素1:append 直接把元素添加到列表末尾 只能有一个参数,也只能在末尾添加
print("append默认添加元素后",list_m1)
list_m1.insert(0,22)# list 里面增加元素2:insert 在指定的位置添加元素
print("insert指定位置添加元素后",list_m1)
print("pop()删除元素后,被删除的元素的值是:",list_m1.pop(),"目前的list是",list_m1) #list 里面用pop()方法删除元素,默认是删除最末尾那个元素
print("pop(2)指定参数删除",list_m1.pop(3),list_m1)#list 里面用pop()方法删除元素,如果有1个参数,是指定删除对应索引的参数,并返回对应的值

#列表的修改1 
list_m1=[1,3,5,7,9]
list_m1[2]="a"
print("list的通过下标单独修改某个元素,修改后结果=",list_m1)

#列表的修改2 批量修改
list_m1=[1,3,5,7,9]
list_m1[0:2]=[9,8,7,6] #如果右侧的赋值长度大于左侧的长度,则覆盖左侧的长度位置,其他元素后移
print("list的修改[]",list_m1)

print("++++++++++++++++++")

#把一个列表赋值给另外一个列表,右侧列表改变后,左侧列表跟着变,因为是同一个内存地址
list_m1=[1,3,5,7,9]
list_m2=list_m1
print(list_m2)
print("list_m2 在list_m1没修改前=",list_m2)
list_m1[0:2]=["a","b","c","d"] #修改list_m1后,list_m2 跟着修改
print("list_m1 修改后        =",list_m1)
print("list_m2 没修改(值变了)=",list_m2)
print("++++++++++++++++++")

#列表拼接 append
list_m1=[1,3,5,7,9]
list_m2=["a","b","c","d"]

list_m1.append(list_m2) #list_m1.append(list_m2) 中,append 里面无论是单个元素,还是列表,拼接后,作为一个整体放在 list_m1 中
print("list1 append 后=",list_m1)
print("++++++++++++++++++")

#列表拼接 extend
list_m1=[1,3,5,7,9]
list_m2=["a","b","c","d"]
list_m1.extend(list_m2) # list_m1.extend(list_m2) 是在list_m1后面,拼接list_m2的全部元素,并且没有返回值
print("list1 extend 后=",list_m1)

print("++++++++++++++++++")

运行结果如下:

append默认添加元素后 [1, 3, 5, 7, 9, 6]
insert指定位置添加元素后 [22, 1, 3, 5, 7, 9, 6]
pop()删除元素后,被删除的元素的值是: 6 目前的list是 [22, 1, 3, 5, 7, 9]
pop(2)指定参数删除 5 [22, 1, 3, 7, 9]
list的通过下标单独修改某个元素,修改后结果= [1, 3, 'a', 7, 9]
list的修改[] [9, 8, 7, 6, 5, 7, 9]
++++++++++++++++++
[1, 3, 5, 7, 9]
list_m2 在list_m1没修改前= [1, 3, 5, 7, 9]
list_m1 修改后        = ['a', 'b', 'c', 'd', 5, 7, 9]
list_m2 没修改(值变了)= ['a', 'b', 'c', 'd', 5, 7, 9]
++++++++++++++++++
list1 append 后= [1, 3, 5, 7, 9, ['a', 'b', 'c', 'd']]
++++++++++++++++++
list1 extend 后= [1, 3, 5, 7, 9, 'a', 'b', 'c', 'd']
++++++++++++++++++

list列表排序:

#列表排序
unsorted_list=[5,3,6,2,8,0]
unsorted_list.sort()# 默认从小到大
print("默认排序sort()=",unsorted_list)

unsorted_list.sort(reverse=True) #反向排序
print("反向reverse=True 排序=",unsorted_list)

运行结果:

默认排序sort()= [0, 2, 3, 5, 6, 8]
反向reverse=True 排序= [8, 6, 5, 3, 2, 0]

list列表的反转:

#列表的反转
unsorted_list=[5,3,6,2,8,0]
unsorted_list.reverse()
print("列表反转后=",unsorted_list)

 

列表反转后= [0, 8, 2, 6, 3, 5]

统计列表里面元素的个数:

#统计列表里面 元素的个数
count_list=[1,2,3,1,1,2,5]
print("统计列表中元素个数=",count_list.count(2))#统计列表中 2 的个数
统计列表中元素个数= 2

Python里面对list操作,remove方法

#remove 用法
remove_list=[1,2,3,1,1,2,5]
remove_list.remove(5) # remove(x) 删除第一个出现在列表中的值为x的元素,如果x不在列表中,则运行报错
remove_list
[1, 2, 3, 1, 1, 2]

 

list的浅复制

# list 的浅复制
num_list=[[1,2,3],[1,1,2,5]]
print(id(num_list))
print(id(num_list[0]))
print("+++++++++++++")
num_shadow_list=num_list.copy() #对list进行复制 
print(id(num_shadow_list))# 运行后发现,外层list的地址不一样,但是里面元素的地址是一样的
print(id(num_shadow_list[0]))#
print("+++++++++++++")
num_list[0].remove(1) #修改原list后,复制的list的值跟着变,外层的list地址依然不一样
print(num_list)
print(id(num_list))
print(id(num_list[0]))
print("+++++++++++++")
print(num_shadow_list)
print(id(num_shadow_list))
print(id(num_shadow_list[0]))

运行结果:(注意看内存地址)

1409289340232
1409289339976
+++++++++++++
1409289338952
1409289339976
+++++++++++++
[[2, 3], [1, 1, 2, 5]]
1409289340232
1409289339976
+++++++++++++
[[2, 3], [1, 1, 2, 5]]
1409289338952
1409289339976

list的深复制

# list 的深复制 
import copy
deep_list=[[1,2,3],[1,1,2,5]]
deep_copy_list=copy.deepcopy(deep_list)
print("deep_list=",deep_list)
print(id(deep_list),id(deep_list[0]))
print("+++++++++++")
print("deep_copy_list=",deep_copy_list)
print(id(deep_copy_list),id(deep_copy_list[0])) #测试会发现,地址都不一样

print("****************")
deep_list[0].remove(1)
print("deep_list=",deep_list)
print(id(deep_list),id(deep_list[0]))
print("+++++++++++")
print("deep_copy_list=",deep_copy_list)
print(id(deep_copy_list),id(deep_copy_list[0]))#对list修改后,没有影响到深复制的内存值,各个list相互独立

运行结果:

deep_list= [[1, 2, 3], [1, 1, 2, 5]]
1409295837832 1409295837448
+++++++++++
deep_copy_list= [[1, 2, 3], [1, 1, 2, 5]]
1409295837576 1409295838088
****************
deep_list= [[2, 3], [1, 1, 2, 5]]
1409295837832 1409295837448
+++++++++++
deep_copy_list= [[1, 2, 3], [1, 1, 2, 5]]
1409295837576 1409295838088

 


list里面内存拼接

# list 里面内容的合并
str_list=["a","b","c"]
print("*".join(str_list))#参数list 里面的内容必须是纯字符串.join前面的字符串,是分隔符

运行结果:

a*b*c

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值