Python——列表

如果想要表达多个“事物”,可以使用列表。
name = ['a','b','c']

1. 列表所有方法都没有返回值,返回的都为None

增:

1
2
name.append('c') #在后面增加一个c
name.insert(1,'d') #增加到b前面

删:

1
2
3
4
name.remove('f') #删除f
del name[1] #删除编号1
name.pop(1) #删除编号1,如果不写那么就删除第一个。pop还可以将删除的值提取出来,重新赋值。
name.clear() #删除列表。

删除时最好不要使用for循环来进行删除,因为指针的原因。会遗漏某个删除项:

1
2
3
4
5
lis = [1,2,3,4,5,6]
for i in lis:
    lis.remove(i)
print(lis)
#结果[2, 4, 6]

可以使用pop来从后往前删。

1
2
3
4
lis = [1,2,3,4,5,6]
for i in range(0,len(lis)):
    lis.pop()
print(lis)

由于删除元素会导致元素的索引改变,所以容易出现问题。建议把要删除的元素添加到另一个集合中然后再批量删除。

1
2
3
4
5
6
7
lis = [1,2,3,4,5,6]
del_lis = []
for i in lis:
    del_lis.append(i)
for i in del_lis:
    lis.remove(i)
print(lis)

改:

1
name[2]='b' #将b更改为f

查:

1
2
3
4
print(name[2],name[0]) #取号码进行识别
print(name[1:3]) #取1和2的值,3为结束位。切片功能
print(name[-1]) #取最后一个值
print(name[-2:]) #取最后两个值

以名字来查询:

1
2
3
print(name.index('a')) #以姓名方式来查找用户的编号
print(name.count('a')) #查看列表中有多少个a
print(name2[0:-1:2]) #每隔2个打印一次。

翻转:

1
name.reverse() #进行翻转,将文件倒过来

排序:

1
name.sort() #升序:排序方式为,特殊符号-数字-大写-小写-中文
1
name.sort(reverse=True) #降序

合并:

1
name.extend(name2) #将name2的合并到name中.name2仍然会有,和name中的名称冲突也会一直执行。

复制:

1
2
3
name2 = name.copy() #浅copy,表示只能复制第一层列表中的文字,如果添加子目录,那么就只能copy更改后的。
import copy #深copy,可以copy子层内的所有文字。
name2= copy.deepcopy(name)

extend()和append()功能类似,但在处理多个列表时,返回的结果完全不同。

1
2
3
4
5
6
7
8
9
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.append(b)
>>> a
[1, 2, 3, [4, 5, 6]]
>>> a=[1,2,3]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

如果想要在A列表中,删除B列表存在的内容:可以使用:

案例:文件复制到A列表中,找到A列表想要删除的内容存放到B列表中,然后for循环B列表的内容删除A列表,最后再保存文件。

1
2
for i3 in b:
    a.remove(i3)

 

列表推导式与生成器推导式:

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
v = [ i for i in range(10)]  #正常的列表推导式
print(v)   #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
v1 = (i for i in range(10))  #生成器推导式
#其中v1是一个推导式,需要再进行循环才行。
for i in v1:
    print(i)
 
#小高级:
 
v2 =  [lambda :i  for i in range(10)]  #生成10个lambda表达式。
for i2 in v2:
    print(i2())
#因为当系统运行时,v2所在的列表内的for循环已经开始执行,那么最后i是等于9的。
#当再次for循环时,运行lambda将会查找i的值,那么这会i已经等于9,就会输出9个9
 
 
v3 = (lambda : i for i in range(10))  #生成1个生成式推导式
for i in v3:  #再进行for循环时,首先会运行lambda,再巡行里面的for循环。
    print(i())
 
#最终说明:
'''
列表推导式:代码运行完成后直接生成一个列表将所有的值存放到里面。
生成式推导式: 不会生成所有值,而是再次循环时,将逐一进行for循环。
'''

  

posted @   新兵蛋Z  阅读(373)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示