目录
- 序列(sequence)
- 列表(list)
- 列表的基本操作
- 切片
- 列表的内置方法
- 遍历列表
- 列表推导式( List comprehensions )
1. 序列(sequence)
1.1 基本概念
- 序列:Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
- 数据结构:计算机中数据存储的方式
1.2 序列的分类
- 可变序列(序列中的元素可以改变):例如 列表(list)字典(dict)
- 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)
2. 列表(list)
列表:是Python中最常用的一种数据结构,它是一组用方括号括起来、逗号分隔的数据。列表的元素可以是任何类型的,个数是无限制的,但使用时一个列表中的元素类型是相同的。下面的列表有4个元素,元素类型分别是字符串、整数、浮点数和列表:
list_1 = ['python’, 1, 3.14, ['x','2']]
总结:
- 列表是Python中的一个对象
-标志是 [ ] - 列表的作用
• 可以保存多个有序的数据
• 用来存储对象的对象
2.1 列表的创建
list_2 = list() # 使用list()函数创建一个空列表
list_3 = [] # 直接创建一个空列表
list_4 = [2333, 'qjh', [521, 1314]] # 可嵌套创建列表
2.2. 访问列表内的元素
- 列表就像一个标号排队的队伍,从头到尾每个元素都有一个递增的号码,这个号码就是对应元素的“索引”(index)。与我们生活中不同的是,列表的第一元素的索引是0。
- 要访问它的某个元素,以方括号加下标值的方式即可。注意要确保索引不越界,一旦访问的索引超过范围,会抛出异常。
>>> list_4 = [2333, 'qjh', [521, 1314]]
>>> list_4[0]
2333
# 列表可以嵌套列表,形成多维列表,形如矩阵。
#其元素的引用方法是list[i][j][k].....
>>> list_4[2][1]
1314
>>> list_4[3]
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
list_4[3]
IndexError: list index out of range
- 其实还可以倒着索引,从-1开始:
>>> list_4 = [2333, 'qjh', [521, 1314]]
>>> list_4[-1]
[521, 1314]
- 正负索引的对应关系如下所示:
列表: ['1', '2', '3', '4']
| | | |
正索引: 0 1 2 3
负索引: -4 -3 -2 -1
2.3 列表元素的赋值
- 和一般变量赋值类似,及其简单。
>>> list_4 = [2333, 'qjh', [521, 1314]]
>>> list_4[1] = 'lxy'
>>> list_4
[2333, 'lxy', [521, 1314]]
3. 列表的基本操作
4. 切片
- 切片:对序列进行截取,选取序列中的某一段。
- 语法: list[start:end:step]
- 解释:以冒号分割索引,
start--起点索引
end--结束点索引
step--步长,表示每隔多少距离取一个元素
省略start表示以0开始
省略end表示到列表的结尾 - 注意:区间是左闭右开的!
- 切片不会修改原有的列表,可以将结果保存到新的变量。
- 其实不止列表有切片,字符串也可以。
str1 = '<a href="http://www.fishc.com/dvd" target="_blank"> 鱼 C 资源打包 </a>'
print(str1[16:29])
print(str1[-49:-36])
print(str1[16:-36])
5. 列表的内置方法
列表的内置方法- extend()、pop()代码示范
# extend()、pop()代码示范
a = [1,2,3,70]
a.extend([[4,5,89]])
print(a)
a[0],a[1] = a[1],a[0]
print(a)
a.pop(1)
print(a)
a += [6]
print(a)
#[1, 2, 3, 70, [4, 5, 89]]
#[2, 1, 3, 70, [4, 5, 89]]
#[2, 3, 70, [4, 5, 89]]
#[2, 3, 70, [4, 5, 89], 6]
- 列表不同种类的复制
# 列表不同种类的复制
a = [0]
b = a
c = a[:]
d = a.copy()
a += [1]
b += [2]
c += [3]
d += [4]
print(a,'\n',b,'\n',c,'\n',d)
#[0, 1, 2]
# [0, 1, 2]
# [0, 3]
# [0, 4]
6. 遍历列表
6.1 for循环
- 通过for循环来遍历列表
语法
for 变量 in 序列(遍历的规则):
代码块
- 注意: for循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量来获取列表中的元素
6.2 range(start, stop[, step])函数
参数说明
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
7. 列表推导式( List comprehensions )
列表推导式( List comprehensions )也叫列表解析,可以用来动态的创建列表
语法如:[有关 A 的表达式 for A in B]
>>>[ i*i for i in range(10) ]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
- 举一个栗子来说明列表推导式的好处。
创建一个列表,格式为[(偶数,奇数),...],奇偶数的范围是0~10.
# 列表推导式
list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
print(list1)
# 一般写法
list2 = []
for x in range(10):
for y in range(10):
if x%2 == 0:
if y%2 != 0:
list2.append((x, y))
print(list2)
- 明显可以看出用列表推导式的方法代码更简洁!
网友评论