列表定义
# 列的定义方式,列表用`[]`定义,用`,`分隔数据
list01 = [1, "hello", 3.14, 1, True] # 定义多数据列表
list02 = [] # 定义空列表
列表取值和修改值
# 列表取值,通过列表名[索引号]取值,列表索引从0开始
list01 = [1, "hello", 3.14, 1, True]
val01 = list01[1] # 根据索引获取列表中的值,值为hello
val02 = list01.index("hello") # 根据值获取列表中的索引,索引为1,列表索引从0开始
# 修改列表中元素的数值,通过列表名[索引号] = 新值 来设置值
list01[2] = "娃哈哈" # 修改列表中指定索引的值
列表添加元素
# append()方法在列表末尾添加一个元素
# insert()方法在列表中插入一个元素
# extend()方法将一个列表追加到另一个列表中
list01 = [1, "hello", 3.14, 1, True]
# 增加列表元素
list01.append("ccc") # 在列表末尾追加一个元素
list02.insert(0, "终止") # 在索引为1处插入元素
list02.extend(list01) # 将list01列表追加到list02列表中
列表删除元素
# pop()方法删除列表最后一个元素,或删除列表索引位置处元素
# del 列表名[索引] 根据索引删除列表中元素
# remove()方法,根据值删除列表中元素
list01 = [1, "hello", 3.14, 1, True]
# 删除列表元素
list01.pop() # 删除列表中的最后一个元素
list01.pop(1) # 删除列表中指定索引位置的元素
del list01[1] # 删除列表中指定索引位置的元素
list01.remove("娃哈哈") # 除列表中第一个出现该值的元素
list01.clear() # 清空列表
列表统计方法
# 列表.count(值) 统计某个值在列表中出现的次数
# len(列表名) 统计列表的长度,即列表中元素的个数
list01 = [1, "hello", 3.14, 1, True]
# 统计列表数据
print(list01.count(1)) # 统计列表中1出现的次数
print(len(list01)) # 统计列表中元素的个数
# 列表统计计算
list03 = [2, 3, 1, 4, 6, 5, 8]
min_val = min(list03) # 内置函数获取最小值
max_val = max(list03) # 内置函数获取最大值
sum_val = sum(list03) # 内置函数获取累计和
print(f'列表最大值为:{max_val}\n列表最小值为:{min_val}\n列表总和为:{sum_val}')
'''
列表最大值为:8
列表最小值为:1
列表总和为:29
'''
列表排序方法
list01 = [1, "hello", 3.14, 1, True]
# 列表排序
list02 = [1, 2, 4, 5, 3, 9, 7]
list02.sort() # 将列表元素按元素数值大小升序排列
list02.sort(reverse=True) # 将列表元素按元素数值大小降序排列
list02.reverse() # 将列表元素根据索引顺序,逆序翻转
list04 = [
{"id": 1,
"name": "lili",
"age": 16
},
{
"id": 3,
"name": "wawa",
"age": 22
},
{
"id": 2,
"name": "sese",
"age": 14
}]
list04.sort(key=lambda d: d["id"], reverse=True) # 根据字典中id的降序排序列表中字典的顺序
list04.sort(key=lambda d: d["id"]) # 根据字典中id的降序排序列表中字典的顺序
print(list04)
列推导式
'''
列表推导式:
格式:列表变量 = [ 含有x变量的表达式 for 变量x in 可迭代的集合 if 含有x的条件语句]
意思是遍历x在可迭代集合中满足if条件的可迭代的数据,通过表达式生成新的集合
'''
list01 = []
for i in range(100):
list01.append(i)
# 上面循环可以写为列表推导式
list02 = [i for i in range(100)]
# 创建一个可以三整除的100内列表
c3 = [i for i in range(100) if i % 3 == 0]
# 创建二维元祖10行3列,x循环套y循环
c4 = [(x, y) for x in range(10) for y in range(3)]
# 变量列表中满足>=20的数据,通过x*10表达式计算生成新的列表
aa = [ x * 10 for x in [10, 20 ,30 ,40] if x >= 20]
print(aa) # [200, 300, 400]
列表切片
# 列表切片,通过[开始索引:结束索引:步长]来对列表元素进行筛选,就是列表切片
list01 = range(10) # 等同于range(0, 10),range函数10也是取不到的
print(type(list01)) # <class 'range'>类型是range类
list02 = list(list01) # 转换range对象为列表对象
# 通过[开始索引:结束索引:步长]来对列表元素进行筛选,就是列表切片,结束索引取不到
l01 = list02[1:3] # 获取列表索引1到索引2处的值,结束索引取不到,[1, 2]
l02 = list02[:3] # 从列表开始取到索引为2出的值,[0, 1, 2]
l03 = list02[0:] # 从列表索引0开始取到列表结束的值,[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l04 = list02[::2] # 从头取到结束按步长2间隔取列表中的值,[0, 2, 4, 6, 8]
l05 = list02[:-2] # 从头开始取到倒数第3个值,[0, 1, 2, 3, 4, 5, 6, 7]
l06 = list02[-3:] # 取后三个列表的值,[7, 8, 9]
# 复制列表用切片方式复制
list03 = list02 # 这样不是复制,而是两个列表名都指向一个列表
list03 = list02[:] # 这样就是复制list02数据到list03