-
列表list
列表的定义:
列表是一种容器
列表是一种可改变的序列
列表是由一系列特定元素组成的,元素与元素之间可能没有任何的关联关系,但他们之间有先后顺序关系
python3中的序列类型:
字符串 str
列表 list
元组 tuple
字节串 bytes
字节数组 bytearray
创建空列表的字面值表达式:
[] #创建一个空列表
L=[] #变量L绑定一个新创建的空列表
创建非空列表的字面值:
L = [1,2,3,4]#绑定一个新创建的含有4个元素的列表
L = ['biejing','shanghai','shenzhen']
L = [1,'two',3.14,'四']
L = [1,2,[3.1,3.2,3.3],4]
列表的构造函数list:
list() 生成一个空的列表,等同于[]
list(iterable)用可迭代对象创建一个列表
示例:
L = list() #L = []
L = list("hello") #L = ['h','e','l','l','o']
L = list(range(5)) #L = [0,1,2,3,4]
列表的运算:
算术运算:
+ += * *= (运算规则与字符串的运算规则相同)
+ 用于拼接列表生成新的列表
x = [1,2,3]
y = [4,5,6]
z = x + y #z=[1,2,3,4,5,6]
+= 用原列表和与右测可迭代对象追加来修改原列表:
语法:
列表变量 += 可迭代对象
示例:
x = [1,2,3]
y = [4,5,6]
x += y #x = [1,2,3,4,5,6]
x +="ABC" #x = [1,2,3,4,5,6,A,B,C]
#+=是改变原来的列表对象,并不会创建新的列表
x = [1,2,3]
x +=[4,5,6]
print(id(x))
列表是可变的对象,+= 是修改原来的对象
字符串是不可变的对象,+=是创建新的对象
*生成重复的列表
x = [1,2]*3 #x = [1,2,1,2,1,2]
*=生成重复的列表,并改变对变量的绑定
x = [1,2,3]
x *= 4 # x = [1,2,3,1,2,3,1,2,3,1,2,3]
列表的比较运算:
运算符:
< <= > >= == !=
比较规则与字符串的比较规则相同
示例:
[1,2,3] < [1,2,4] #True
[1,2,3] < [3,2,1] #True
[1,2,3] == [3,2,1] #False
[2,3] >=[1,2,3] #True
[1,"2"] > ['2',1] #报错
列表是可迭代对象
L = [1,3,5,7]
for x in L:
print(x) #1 3 5 7
列表的in /not in运算符
判断一个值是否存在于列表中,如果存在返回True,否则返回False
同字符串的in运算符
用于检查一个值是否存在于列表中,如果存在返回True,否则返回False
示例:
x = [1,'two',3,'四']
3 in x #True
'3'in x #False
10 not in x #True
列表的索引操作
语法:
列表[整数表达式]
用法:
与字符串索引的用法相同(分为正向索引和反向索引)
示例:
x = [1,3,5,7]
print(x[1]) # 3
print(x[-1]) # 7
列表的索引赋值:
列表是可变的,可以通过索引赋值来改变列表中的元素
语法:
列表[整数表达式] = 表达式
作用:
改变列表中索引的绑定关系
示例:
x = [1,2,3,4]
x[2] = 3.14 #改变了第三个元素的值
x = [1,2,3.14,4]
列表的切片
列表[:]
列表[::]
列表的切片取值返回一个新的列表,规则等同于字符串切片规则
示例:
x = [1,2,3,4,5,6,7,8,]
x[::2] #[1,3,5,7]
y = [1::3] #[2,5,8]
列表的切片赋值:
作用:
可以改变列表的数据排列,可以插入和修改数据
可以用切片改变列表的对应元素的值
语法:
列表[切片] = 可迭代对象
说明:
切片赋值的赋值运算符(=) 的右侧必须是一个可迭代对象
示例:
l = [2,3,4]
l[0:1] = [1.1,2.2] # l = [1.1,2.2,3,4]
l[2:] = [3.3,4.4,5.5] # l[1.1,2.2,3.3,4.4,5.5]
l[:] = [3,4] # l = [3,4]
l[0:0] = [1,2] # l = [1,2,3,4]
l = [3,4]
l[1:1] = [3.14] # l = [3,3.14,4]
l = [3,4]
l[-1:-1] = [5,6] # l = [3,4,5,6]
l = [2,3,4]
l[1,2] = 'ABC' #l = [2:'A','B','C',4,]
L = [2,-1,7]
L[1:2] =range(3,7) #l =[2,3,4,5,6,7]
切片的注意事项:
对于步长不等于1的切片赋值,赋值运算符的左侧为可迭代对象
提供元素的个数一定要等于切片切出的段数
示例:
l = [1,2,3,4,5,6,7,8,9]
l[1::2] = ['a','b','c','d'] #[2,'a',4,'b',6,'c',8,'d']
del 语句 用于删除列表的元素
语法:
del列表[索引]
如:del[0]
delL列表(切片)
如:del l[1:2]
python3中常用于序列的元素:
len(s) 返回序列的长度
max(x) 返回序列的最大值元素
min(x) 返回序列的最小值元素
sum(x) 返回序列元素的和
any(x) 真值测试,如果列表中其中一个值为真值则返回True
all(x) 真值测试,如果列表中所有元素都是真值则返回True
列表推导式 list comprehensioin
列表推导式是用可迭代对象创建的列表的表达式
作用:
用简易方法生成列表
语法:
[表达式 for 变量 in 可迭代对象]
或
[表达式 for 变量 in 可迭代对象 if 真值表达式]
示例:
#生成一个数值为1-9的平方的列表
#[1,4,9,16,....,81]
l = []
for i in range(1,10):
l.append(i**2)
#推导式实现:
l = [i**2 for i in range(1,10)]
用列表推导式生成1-100以内奇数的列表
结果是:[1,3,5,7,9,....,99]
l = [i for i in range(1,100,2)]
练习:
输入一个开始的整数用begin绑定
输入一个结束的整数用end绑定
将从begin开始,到end结束(不包含end)的所有偶数存在于列表中
并打印出此列表
(可以使用列表推导式完成,也可以使用循环语句完成)
begin = int(input('开始的数:'))
end = int(input("结束的数:"))
l = [i for i in range(begin,end) if i %2 == 0]
print(l)
列表推导式的嵌套
语法:
[表达式 for 变量1 in 可迭代对象1 if 真值表达式1
for 变量2 in 可迭代对象2 if 真值表达式2 ...]
示例:
#将列表[10,20,30]中的元素与列表[1,2,3]元素分别相乘,将得到的元素放于下一个列表中
l = [x + y
for x in [10,20,30]
for y in [1,2,3]]
print(l) #[11,12,13,21,22,23,31,32,33]
练习:
用字符串'ABC'和字符串'123'生成如下列表
['A1','A2','A3','B1','B2','B3','C1','C2','C3']
l = [x + y
for x in 'ABC'
for y in '123']
print(l)
已知有一个字符串:
s = '100,200300,500,800'
将其转化为列表,列表的内部是整数
l = [100,200,300,500,800]
s = '100,200,300,500,800'
l = [int(i) for i in s.split(',')]
print(l)