Sequence
Lists
列表是python中的内置数据类型
- 使用[]创建列表
- 使用赋值语句命名列表
- 使用name[下标]访问列表元素(0-index),或使用getitem(
-
,
)(operator模块)来访问元素 - 使用len()函数获取元素个数
name[下标]是一种元素评估表达式,可以依次评估下标对应元素
列表中的元素可以是表达式,此时列表中的值将绑定为表达式的结果
digits = [2//2,2+2,2,2*2]
列表间可以相加与相乘(运算符或函数)
[2,7]+[1,8,2,8]*2 == [2,7,1,8,2,8,1,8,2,8]
列表中的元素可以是任何东西,包括列表
1
2
pairs = [[10,20],[30,40]]
pairs[1][0] # 结果是30in运算符
in运算符可以判断某元素是否存在于列表中
not in 运算符可以判断某元素是否不存在于列表中
返回值为True 或 False
这两个运算符寻找的是单独元素,而非子序列
e.g.
1
2
3
4
5
6
7
8
9
digits = [1,8,2,8]
>>> 1 in digits
True
>>> '1' in digits
False
>>> [1,2] in [[1,2],3,4]
True
>>> [1,2] in [[[1,2],3],4]
FalseFor Statement
执行过程
1
2
for <name> in <expression>:
<suite>- 执行
,该表达式必须是一个可迭代的量(如一个序列) - 对序列中的每个元素,按序进行如下操作:
- 在当前作用域中将每个元素赋给
- 执行
语句块中的语句
- 在当前作用域中将每个元素赋给
### 序列解包
e.g.寻找序列中相同元素的数对
pairs = [[1,2],[2,2],[3,2],[4,4]]
1
2
3
for x, y in paris:
if x==y:
same_count+=1该循环中,for循环会自动将paris中的内层列表中的两个元素赋给x,y两个变量
Ranges
range是表示连续整数的序列,通过给出起始与结束值获得范围内的整数
range包括起始值而不包括结束值
用法:range(<起始值(默认为0)>, <结束值>, [步长])
作用:
- 计算长度:结束值-起始值
- 选择元素:起始值+index
- 作为计数器:用_等当作name而不实际使用它
转换列表:使用list() - 列表构造函数
List Comprehension
列表中可以写一些语句来构造列表
e.g.1
1
2
3
4
5
>>> odds = [1,3,5,7,9]
>>> [x+1 for x in odds]
[2,4,6,8,10]
>>> [x for x in odds if 25%x == 0]
[1,5]e.g.2 查找某个数的因数
1
2
def divisors(n):
return [1]+[x for x in range(2,n) if n%x==0]