1. 列表(list)
特性
-
承载任意的数据类型,存储大量的数据
-
查询速度比较慢
创建
l = [1, 2, 'hello'] # 列表格式
l = list('abc') # ['a','b','c']
- 列表与列表相加
- 列表与数字相乘
l1 = ['你好',123]
l2 = ['hello',456]
print(l1+l2) # ['你好', 123, 'hello', 456]
print(l1*2) # ['你好', 123, '你好', 123]
切片
例:l = [100, '你好',True]
- 索引:列表内以逗号分割为一个元素,每个元素可保留自己的数据类型
l[1] # 100 <class 'int'>
l[-1] # True <class 'bool'>
- 切片:与字符串切片用法相同
l[:2] # [100, '你好']
l[-2::-1] # ['你好', 100]
增删改查
增
-
追加 :
list.appeng(元素)
-
插入 :
list.insert(索引, 元素)
-
迭代追加 :
list.extend(序列)
(可追加序列中的多个值)
删
-
按索引删除 :
list.pop(索引)
(删除并返回删除的值,默认删除最后一个元素) -
按切片删除 :
del list[切片]
(与字符串切片步长相同) -
指定元素删除 :
list.remove(元素)
(如果有重名元素,仅删除第一个) -
清空 :
list.clbear()
改
-
按索引改:
list[索引] = 改的值
-
按切片改:切片可以迭代改值,加步长要改动的元素必须与迭代的元素一一对应
l = ['a',2,'b',4]
l[1:] = 'bc' # ['a','b','c']
l[::2] = '13' # [1,2,3,4]
查
- 按切片:
print(l[::2])
- for循环:
for i in l:print(i)
循环注意:循环列表时,改变列表大小会影响索引
- 切片删除:
del l1[1::2]
- 倒序法删除:
for i in range(len(l1)-1,-1,-1):
- 思维置换:将满足条件的放入新列表
嵌套
例:lb = [1,2,'你好',[1,'hello',3,]]
- 索引嵌套获取嵌套的列表:
lb[-1][1]
# hello - 嵌套改值:
lb[-1][1] += '!'
# hello!
其他操作
排序命令(通常用于数字列表)
-
升序 :
list.sort()
-
降序 :
list.sort(reverse=1)
-
反转 :
list.reverse()
统计
-
计数:
list.count(对象)
(统计元素2出现的次数) -
获取长度:
len(list)
(输出列表有多少元素) -
获取索引:
list.index(元素)
(返回元素首次出现列表的下标,没有此元素会报错)
enumerate() 列举
将可迭代对象的每个元素和对应的序号组合成序列为元组,可以指定序号的起始值
语法:enumerate(sequence, start=0)
- sequence:序列、可迭代对象(如:列表、元组、字符串)
- start:起始序号,可自定义起始值,默认为 0
l1 = ['a', 'b', 'c']
for i in enumerate(l1):print(i) # [(0, 'a'), (1, 'b'), (2, 'c')]
for i in enumerate(l1, start=6):print(i) # [(6, 'a'), (7, 'b'), (8, 'c')]
for a,b in enumerate(seq):print(a, b) # 拆包
2. 元祖(tuple)
不可变的只读数据类型,有序排列
例:t = (1, [1, 2])
- 查
索引查看:print(y[0]) # (1)
切片查看:print(y[::-1]) # [1,2]
循环查看:for i in t:print(i) # 循环元素
元组长度:len(t) # 2
- 可变数据类型的子元素内部可以变动
y[-1].append(4) # 元组内列表是可变数据类型,内部可以增加
print(y) # (1, [1, 2, 3])
- 单元素的元组,一定要添加一个逗号
y = ('meet')
print(type(tu)) # <class 'str'>
tu = ('meet',)
print(type(tu)) # <class 'tuple'>
- 元组的拆包
c = (1, 2) # 元组不可被更改内容,但可以赋值于变量
a, b = c # 元素必须一一对应
print(a, b) # 1 2
- 元组的嵌套:索引嵌套获取嵌套的元组
y = (1, 2, ('a', 'b'))
print(y[-1][-1]) # b
其他操作
- 计数:
tuple.count(元素)
(某元素出现的次数)
t = (1,2,2,2,3,4)
print(t.count(2)) # 3
- 查找下标:
tuple.index(元素)
(通过元素找索引,找到第一个就返回,找不到就报错)
t = ('hello','hi','hello')
print(t.index('hello')) # 0
range() 范围
可创建一个整数元组,可控制数字的范围,类似切片
语法:range(start, stop, step)
- start:起始值,默认为 0 可不写
- stop:结束值,实际取值要 +1
- step:步长值,默认为 1 可不写
单值:range(4) # (0, 1, 2, 3)
双值:range(3, 6) # (3, 4, 5)
三值:range(6, 3, -1) # (6, 5, 4)
切片:print(range(4)[-1]) # 3
- 与for循环结合
for i in range(1,9): print(i) # 1-10
for i in range(2,11,2): print(i) # 1-10偶数
for i in range(10,0,-1): print(i) # 10-1
- 依次输出列表的所有索引
lb = [1, 2, 3,'a','b']
for i in range(len(lb)): print(i) # 获取列表长度为range值