Python数据类型 — 列表

本文详细介绍了Python列表的基础操作,包括切片、增删改查、复制、排序等,并讲解了列表生成式的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Python中的列表类似于C/C++语言中的数组。

列表的符号:[ ] 

列表名 = [元素……]

功能:切片、增、删除、索引、复制、循环、包含

切片:原则(顾头、不顾尾)[a, b]è[a, b-1]

list = ["A", "B", "C", "D", "E"]
print(list)
print(list[1:3])  # 顾头不顾尾,取出下标为1至2的元素
print(list[0:3])  # 等价于print(list[:3])

print(list[-1])  # 反方向取第一个,输出E
print(list[-2:])  # 从倒数第二个开始取至最尾巴,输出D,E
print(list[-3:])  # 取得最后面的三个值,即从倒数第三个开始至最后,输出C,D,E
print(list[-3:-1])  # 取得[-3,-1-1]之间的下标的值;

print(list[0:-1:2])  # 参数分别是起始位置,终止位置,步长;等价于print(list[::2])

list = ["A", "B", "C", "D", "E"]
list.append("F")  # 在尾部追加
list.insert(1, "Temp")  # insert(index,object),即在原来是1的前面插入"Temp"
print(list)

extend:将一个列表加入到另一个列表的末尾,extend亦可用“+”号代替,效果等价于“+=”运算符;
lia = ['a', 'b']
lib = ['c', 'd']
lia.extend(lib)
print(lia)  # 输出:['a','b','c','d']

删除

list = ["A", "B", "C", "D", "E"]
list.remove("C")  # 没有返回值(即返回值为None);
del list[1] # 删除该下标的数,没有返回值;
list.pop()  # 删除最后一个,返回删除的元素;
list.pop(1)  # 删除该下标的数并返回刚刚删除的数;等价于:del list[1]
list.clear()  # 清除全列表

索引

list = ["A", "B", "C", "D", "E"]
print(list.index("C"))  # 返回被索引值的所在位置
print(list[list.index("C")])

复制

浅copy:第二个列表中的每个元素只是第一个列表中每个元素的引用!类似于快捷方式(软连接),现象是只复制第一层列表;
深复制:deepcopy,完完全全复制一个列表,占用独立的内存空间

listX = ["A", "B", "C", ["aa", "bb", "cc"], "D", "E" ]  # 列表中的列表,多层列表
# 浅copy,三种方式实现
La = copy.copy(listX)
Lb = listX[:]  # 切片的方式实现copy
Lc = list(listX)

# 浅copy应用举例:一对夫妻有同一银行账号,名字是不同的,然而存款却是不变的
person = ["name", ["CardNumber", 100]]   # 第一层是名字,第二层是账号和存款;

personA = person[:]
personB = person[:]

personA[0] = "husband"
personB[0] = "wife"

personA[1][1] -= 50  # 丈夫用了50元,那么卡上的总共余额就只有100-50元,则夫妻两个对钱的查询余额都是100-50元;
print(personA)  # 输出['husband', ['CardNumber', 50]]
print(personB)  # 输出['wife', ['CardNumber', 50]]

 

//循环
list = ["A", "B", "C", "D", "E"]
for i in list:  # 连续打印
    print(i)
//包含
list = ["A", "B", "C", "D", "D", "E"]
print(list.count("D"))   # 输出 2

操作方法函数 

list = ["A", "B", "C", "D", "E"]
list.reverse()  # 反转
list.sort()  # 默认按照ASCII码表的顺序排序,参数:self,key,reverse
             # 不同类型的数据类型不可放在一个列表排序
listEx = [1, 2]
list.extend(listEx)  # 合并列表,print(list.extend(listEx)) 这样并不能显示list列表;
print(list)

list.count(“参数”)  统计参数出现在列表中的次数;
len(list)   返回列表名为list的长度
列表1+列表2    功能类似于extend,合并两个列表与列表1中;

max(列表)  返回该列表的最大值
min(列表)  返回该列表的最小值

列表生成式

即,使用“list”或“[ ]”快速生成一个列表;

语法:[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]

list(range(1,11))  # 使用list直接生成列表:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

L = []
for x in range(1,11):  # 生成[1x1, 2x2, 3x3, ..., 10x10]
    L.append(x * x)
print(L)  # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

list_a = [x * x for x in range(1, 11)]  # 上面的循环太过繁琐,列表生成式则可以用一行语句代替循环

print(list_a)  # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

高级应用:
# for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方,仅限于list;
print([x * x for x in range(1, 11) if x % 2 == 0]) # 只有满足x条件的才会被拿到x*x中去;

# 使用两层循环,可以生成全排列
print([m + n for m in 'ABC' for n in 'XYZ'])

# 打印九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print(j,' * ',i,' = ',i*j,end='   ')
    print()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值