一、什么是列表List
容器 | 存储数据的 |
定义 | 1.是一种容器;一种序列,可以被改变的序列; 2.由特定元素组成的,元素之间可以没有关联关系,但有先后顺序 3.可以放任意类型的数据,万能的容器,可以放列表 4.是可迭代对象 |
创建空列表的字面值 | L = [ ] |
创建非空列表的字面值 | L = [ 1, 2, 3, 4 ] L = [‘beijing’, ‘shanghai’] L = [1, ‘two’, 3.14 ] |
二、列表的构造函数
list() | 生成一个空列表,等同于[] |
list(iterable) | 用可迭代对象创建一个列表 |
例 L = list() L = list(‘hello’) L = list(range(1,10,2)) |
L绑定空列表 L绑定[‘h’,‘e’,‘l’,‘l’,‘o’] L绑定[ 1, 3, 5, 7, 9 ] |
三、列表的运算
3.1列表的算术运算
+ += | 拼接列表 |
* *= | 生成重复列表 |
绑定列表的变量+=可迭代对象 | L= [1 ,2, 3] L += [ 4 ,5 , 6] ‘789’ range(10,13) |
例 X = [ 1, 2, 3] Y = [ 4, 5, 6] Z = X + Y |
>>> Z = [ 1, 2, 3, 4, 5, 6 ] |
X = [ 1, 2, 3] X += [ 4, 5, 6] Print( X ) |
>>> Z = [ 1, 2, 3, 4, 5, 6 ] |
X = [ 1, 2 ] * 3 | >>> x = [ 1, 2, 1, 2, 1, 2 ] |
3.2列表的比较运算
< <= > >= == != |
|
规则和string相同 |
|
例 X = [ 1, 2, 3] Y = [ 1, 2, 4] X != Y Y > X X <= Y |
>>>True >>>True >>>True |
[ ‘AB’, ‘abc’, ‘123’ ] < [ ‘AB’, ‘123’, ‘abc’ ] >>>False | |
[ 1, ‘two’ ] > [ ‘two’, 1 ] | >>>TypeError |
3.3列表的in/not in运算符
作用 | 判断一个值是否存在于列表中; |
例 2 in [ 1, 2, 3, 4] ‘2’ in [ 1, 2, 3, 4] |
>>>True >>>False |
四、列表的索引index
4.1列表的索引操作
语法 | list [ 整数表达式 ] |
用法 | 同字符串索引;规则与字符串规则完全相同; 分正向索引、反向索引; |
示例 |
|
L = list(‘ABCD’) print(L[ 1 ]) L[ -1 ] |
>>>B >>>D |
4.2列表的索引赋值
列表是可变的,通过索引赋值改变列表中的元素 | |
但是并没有生成新的列表,id值仍然不变; | |
str就不能进行索引赋值;str的+=,生成了新的字符串,绑定新变量,所以id一定会变;str是不可变对象,拼接时,得生成新的。 | |
list 可以进行索引赋值;list的+=,在原来的list上直接拼接,还是原来的变量,id没变;list是可变对象,拼接时,直接在尾巴上拼接。 | |
示例 |
|
L = [ 1, 2, 3, 4 ] L [ 2 ] = 3.1 Print(L) |
>>>[ 1, 2, 3.1, 4 ] |
五、列表的切片
5.1列表的切片
语法 | list [ : ] list [ : : ] |
说明 | 列表切片返回一个列表,规则等同于字符串切片规则 |
示例 |
|
X = list( range (10)) Y = X [ 1 : 9 : 2 ] Y = X [ : : ] |
>>>奇数 >>>复制X列表 |
5.2列表的切片赋值
string就没有切片赋值
语法 | list[ slice ] = 可迭代对象 |
作用 | 可改变原列表的排序,可以插入、修改、删除数据 可用切片改变列表对于元素的值 |
说明 | 切片赋值的等号右侧必须是一个‘可迭代对象’ |
注意事项 | 步长不等于1时,可迭代对象提供的数据元素要等于切片切出的段数 |
示例 |
|
L= [ 2 , 3 , 4 ] L[ 1 : 2 ] = [ 3.1 , 3.2 ] |
>>>L = [ 2 , 3.1 , 3.2 , 4 ] |
L= [ 2 , 3 , 4 ] L [ 2: ] = [ ] | (删除某个元素) >>>L = [ 2 , 3] |
L= [ 2 , 3 , 4 ] L [ :0 ]= [ 0 , 1 ] | (在list开头插入) >>>L = [ 0 , 1 , 2, 3, 4 ] |
L= [ 2 , 3 , 4 ] L[ 3 : ] = [ 5 , 6, 7 ] | (在list尾巴插入) >>>L = [ 2, 3, 4, 5, 6, 7] 还可以L[ 10000 : ] L[ len() : ] |
L= [ 2 , 3 , 4 ] L[ 1 : 2 ] = ‘ABC’ | (把字符串拆开) >>>L = [ 2 , ‘A’, ’B’,’C’,4 ] |
L=range(1,9) L[1 : : 2] = [ 3.1, 5.2, 7.3] |
可迭代对象提供的数据元素要等于切片切出的段数 |
L = L[ : : -1 ] | (反转列表,id会变)(因为绑定了一个新的变量) L2 = L[ : : -1] L[ : ] = L2 (这样,id就不会变了)(如果L = L2,还是会变,得切!) |
六、del语句
语法 | del list[ index ] del list [ slice ] |
示例 |
|
L = [ 1, 2, 3, 4, 5, 6 ] del L[ 1 ] del L[ 2 ] del L[ -1 ] L = [ 1, 2, 3, 4, 5, 6 ] del L[ : : 2 ] |
|
七、列表方法
sorted(iterable,reverse[W用1] =False) | 用于生成一个排序后的列表,生成新列表,原列表不变 |
reversed(seq) | 返回原序列反序的可迭代对象 |
示例 |
|
L = [7, 9, 5, 1, 3] L2 = sorted( L ) L3 = sorted( L , reverse = True ) For x in reversed( L ): Print( x ) |
>>>L2 = [ 1, 3, 5, 7, 9 ] >>>L3 = [ 9, 7, 5, 3, 1 ]
>>> 3 1 5 9 7 |
八、列表推导式
List comprehension |
| |
是用iterable依次生成带有多个元素的列表的表达式 | ||
作用 | 用简易方法生成列表 | |
语法 | [ 表达式 for 变量 in iterable ] [ 表达式 for 变量 in iterable if 真值表达式 ][W用2] | |
示例 |
| |
#生成一个列表,此列表的数值是1~9的平方 L = [ x ** 2 for x in range( 1 , 10 ) ] |
列表推导式的嵌套 |
|
语法 | [ 表达式 For 变量1 in iterable1 if 真值表达式1 For 变量2 in iterable2 if 真值表达式2 ] |
示例 |
|
用字符串‘ABC’和‘123’生成如下列表: A1,A2,A3,B1,B2,B3,C1,C2,C3 |
L = [ x + y for x in ‘ABC’ for y in ‘123’ ] |
[W用1]
= False ; 升序
=True ; 降序
[W用2]
1. 取iterable
2. 绑定变量
3. 判断真值表达式
4. 再决定要不要执行表达式