认识 list
- list 是一个序列
- 存在于中括号内
- list 中元素的类型可以多样,同一个 list 中的元素的类型可以是字符串(str)、整型(int)、布尔型(Boolean)、以及嵌套的 list 等
1 2 3 4 5 6
| list1 = ['东北', '华北', '华南', '华东', '西南', '西北'] list2 = []
type(list1) list1 list2
|
1 2 3
| list ['东北', '华北', '华南', '华东', '西南', '西北'] []
|
1 2 3 4
| list3 = list('ABCDEF') list4 = list(range(10)) list3 list4
|
1 2
| ['A', 'B', 'C', 'D', 'E', 'F'] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
list 的索引
下标索引
- 注意索引是从 0 开始,最后一个的索引编号为 n-1,即所有元素的编号依次为(0,1, 2, …, n-1)。
1 2 3 4
| list3[0] list3[2] list3[-1] list3[-2]
|
切片
- list[start: end : step]
- 包含 “start”,但不包含 “end”
- “step” 表示步长,默认情况下,“step”为 1
1 2 3 4 5
| list3[1:4] list3[:4] list3[4:] list3[::-1] list3[::2]
|
1 2 3 4 5
| ['B', 'C', 'D'] ['A', 'B', 'C', 'D'] ['E', 'F'] ['F', 'E', 'D', 'C', 'B', 'A'] ['A', 'C', 'E']
|
用for 循环遍历列表
1 2
| for i in list1: print(i)
|
列表的增、改、删
- list 是一个可变的序列,可以通过添加、修改、删除等操作来操作 list 中的元素。
append() 方法
1 2 3 4
| a = ['北京', '上海', '天津', '重庆']
a.append('深圳') a
|
['北京', '上海', '天津', '重庆', '深圳']
insert()
['北京', '广州', '上海', '天津', '重庆', '深圳']
用 pop()
1 2
| '深圳' ['北京', '广州', '上海', '天津', '重庆']
|
用 pop(i) 方法
1 2
| '北京' ['广州', '上海', '天津', '重庆']
|
修改 list 中的元素
1
| ['北京', '上海', '天津', '重庆']
|
列表操作符
‘ + ’ 拼接列表
1 2 3 4
| es = ['黑龙江', '吉林', '辽宁'] ws = ['新疆', '青海', '甘肃', '宁夏', '陕西']
es+ws
|
1
| ['黑龙江', '吉林', '辽宁', '新疆', '青海', '甘肃', '宁夏', '陕西']
|
‘ * ‘ 重复列表
1
| ['黑龙江', '吉林', '辽宁', '黑龙江', '吉林', '辽宁']
|
判断元素是否存在
列表函数
len( )
1 2 3
| a = list(range(11, 29, 4))
len(a)
|
- max(list)
min(list)
list()
1 2
| b = (1, 3, 5, 7) list(b)
|
list的其他方法
list.count(obj)
1 2 3
| a = list('guangzhou') a.count('g')
|
list.extend(seq)
- 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
1 2 3
| a = list('guangzhou') a.extend(['sh',12345]) a
|
1
| ['g', 'u', 'a', 'n', 'g', 'z', 'h', 'o', 'u', 'sh', 12345]
|
list.index(obj)
1 2
| a = list('guangzhou') a.index('z')
|
list.remove(obj)
1 2 3
| a = list('guangzhou') a.remove('g') a
|
['u', 'a', 'n', 'g', 'z', 'h', 'o', 'u']
list.sort()
1 2 3 4
| a = list('guangzhou') a.sort()
a
|
1
| ['a', 'g', 'g', 'h', 'n', 'o', 'u', 'u', 'z']
|
list.reverse()
1 2 3
| a = list('guangzhou') a.reverse() a
|
1
| ['u', 'o', 'h', 'z', 'g', 'n', 'a', 'u', 'g']
|
列表推导式 (解析式)
一般语法结构:
- new_list = [x for x in iterable]
- 其中的 iterable 表示可迭代的对象,包括字符串(str)、列表(list),元组(tuple)、字典(dict)、集合(set)以及生成器(generator)等。
1
| [x for x in range(1, 10, 2)]
|
1 2
| [x.upper() for x in "Lemon"]
|
1
| ['L', 'E', 'M', 'O', 'N']
|
1
| [str(x) for x in range(5)]
|
1
| ['0', '1', '2', '3', '4']
|
两层 for 循环的列表推导式
- 列表推导式中,可以同时包含多个 for 循环,比如同时两个 for 循环
1
| [x**2+y for x in range(1, 4) for y in [10, 20]]
|
1
| [11, 21, 14, 24, 19, 29]
|
使用两个变量来生成 list
- 列表推导式也可以使用两个或多个变量来生成 list,结合字典的使用
1 2 3
| g = {'x': '1', 'y': '2', 'z': '4'} [k+'='+v for k, v in g.items()]
|
含 if 语句的列表推导式
- 列表推导式中还可以引入 if 条件语句,
- 包含 if-else 语句的列表推导式
1 2
| [x**2 for x in range(5) if x % 2 == 1]
|
1 2 3
| [x**2 if x % 2 == 0 else x+2 for x in range(5)]
|
1 2
| [x**2 for x in range(1, 9) if x % 2 == 0 if x % 3 == 0]
|
列表的去重
- 直接用set方法可以去重,但是原列表中元素的顺序被打乱
- 利用原来各元素在列表中的索引位可以保持原来的顺序
1 2
| a = [1, 5, 3, 7, 5, 3, 1, 9] list(set(a))
|
列表推导
1 2 3 4 5 6
| b = [] for x in a: if x not in b: b.append(x) b
|
sorted
- sorted(list(set(list1),key=list1.index)
1 2
| sorted(list(set(a)), key=a.index)
|
{}.fromkeys(seq)
获取列表离散的元素
- 获得第 1、2、4 个元素,能不能通过离散的索引值来获取呢?
前面已经实践过,直接通过离散的索引值来获取列表中的元素是不行的。
通过列表推导式的学习,我们可以换一种思路,来实现列表中离散的元素的获取,
1 2
| ws=['新疆', '青海', '甘肃', '宁夏', '陕西'] [ws[x] for x in [0, 2, 4]]
|
1 2
| lst=list("ABCDEFG") lst[1:4],lst[:4],lst[2:]
|
1
| (['B', 'C', 'D'], ['A', 'B', 'C', 'D'], ['C', 'D', 'E', 'F', 'G'])
|
1 2
| lst=list("ABCDE") [lst[i] for i in [0,3,4] ]
|
1 2 3 4
| lst=list("ABCDEFG") lst.extend(["gg","dd"]) lst[len(lst):]=['dddd','ppp'] lst
|
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'gg', 'dd', 'dddd', 'ppp']