List 列表
1 List 常用操作
#使用[]创建列表
list1 = []
list2 = [100,200,300]
#一个类表中可以具有不同的数据类型的元素
list3 = [[1,2,3],44,'liuxing']
#可以使用+号,操作多个list 进行连接
a = [1,2,3,4,5]
b = [5,6,7,8,9]
d = ['a', 'b', 'c']
c = a + b + d
print(c)
#可以使用 * 号,对一个list进行复制
a = [1,2,3,4,5]
b = a *3
print(b)
#可以使用 in not in 判断一个元素是否在list多
#常用与循环中,或者if 判断中
a = [1,2,3,4,5,6]
b = 8
#c 的值是一个布尔值
c = b in a
print(c)
d = b not in a
print(d)
2 列表常用操作
2.1 访问列表
(1) 使用索引下表操作
(2) 列表的位置是从0开始
#下表访问列表
l = [1,2,3]
print(l[1])
2.2 切片操作(也适用于 str, tuple)
切片操作就是对列表的任意一段进行截取
切片格式为 list[start:end:step] , 默认步长1 格式为 list[start:end]
1. start 表示从哪个下表开始,可以不写 默认从0开始
2. end 表示到哪里结束,可以不写,默认截止到最后一个index +1。这个值取不到,只能取到前一个值
3. step 表示步长,默认为1,表示1个1个取,如果为2 表示隔一个取
#创建列表
l = [i for i in range(1,10)]
#切片样例
print(l[1:4])
print(l[:])
print(l[:4])
print(l[2:])
print(l[1:9:2])
规定: 数组最后一个数字的下标是 -1
List 负数切片
普通切片是从前往后进行截取元素
负数切片则是从后往前进行截取元素
一般情况下 list1[-a:-b] a的值必须大于b,小于切出来为空
step 为负数是表明反正来 如果 a的值小于b, 可以把step 置为负数
list1 = [i for i in range(1,10)]
print(list1)
#切片为空列表
print(list1[-1:-8])
print(list1[-8:-1])
#切片值等同于list1[-8:-1]
print(list1[-1:-8:-1])
切片常用与对一个列表的复制操作,生成的是一个新的列表
= 操作只是对于一个列表进行引用,地址复制而已
list 2 = list1[:]
3 列表的常用函数
函数 | 含义 | 示例 |
---|---|---|
append | list 末尾插入一个值 | list1.append(100) |
insert | insert(index,data) 指定位置插入一个值 | list1.insert(3, 666) |
remove | 删除列表中的一个值,如果没有这个值报错 if x in list: list.remove(x)
如果有多个值,删除了list下表的第一个 如果要删除列表中值相同的所有元素,要使用循环进行删除,不过不怎么用 list1 = ['a','a','a','a','b','c'] while 'a' in list1:
| list1.remove('val1') |
del | 删除命令,按照索引进行删除 | del list1[idx1] |
clear | 对列表进行清空,保存长度索引 | list1.clear() |
reverse | 对列表进行翻转 | list1.reverse() |
extend | 对列表进行扩展,把一个列表拼接到另外一个列表中 | list1.extend(list2) |
count | 查找列表中制定值或元素的个数 | list1.count('val1') |
copy | 对一个列表进行浅拷贝,如果list中有 list, dict, tuple 等。 进行拷贝后, 这些元素只是进行地址复制,并不是值复制 | list2 = list1.copy() |
len | 求长度 适用于tuple str dict ... | len(list1) |
max | 求最大值 | max(list1) |
min | 求最小值 | min(list1) |
4 列表遍历
# 使用for 进行遍历:
a = [1,2,3,4,5,6,7]
for i in a:
print(i)
# 使用range可定义有限次数的循环
for i in range(1,10):
print(i)
# 双层列表循环
# 子列表中元素的个数必须与for中变量个数完全一致,否则出错
a = [["one", 1], ["two", 2], ["three", 3]]
for k,v in a:
print(k, "--", v)
5 列表中的解析式(解析式可以应用与可迭代的数据类型)
列表解析是主要是为了使python 代码简化,把一串很长的代码用一行代码表示
基本表达格式
[expression for var1 in list1 if condition]
if condition 不是必须
expression 为表达式
如果多个变量 需要使用 for var1 in list1 for var2 in list2
#最简单的例子
l1 = [i for i in range(1,10)]
#等同于
for i in range(1,10):
l1.append(i)
#带条件的解析式
numbers = [1, 2, 3, 4, 5]
doubled_odds = [n * 2 for n in numbers if n % 2 == 1]
# 等同于
numbers = [1, 2, 3, 4, 5]
doubled_odds = []
for n in numbers:
if n % 2 == 1:
doubled_odds.append(n * 2)
#双层循环
flattened = [n for row in matrix for n in row]
#等同于
flattened = []
for row in matrix:
for n in row:
flattened.append(n)