Containers
Slicing
切片可以简洁的获取列表中的子列表,实质是创建了新的列表而不影响原始列表
如列表odds = [3,5,7,9,11]
- odds[1:3] -> [5,7] 默认也是包括起始值不包括结束值
- odds[:3] -> [3,5,7] 省略开头将从列表头开始算起
- odds[1:] -> [5,7,9,11] 省略结尾将覆盖至列表尾
内置函数
sum
sum(<可迭代对象>, [起始值])
返回所有可迭代元素和并加上起始值,起始值默认为0
sum还可以实现列表相加:sum([[2,3],[4]],[])
注意起始值类型要和前面相同
max
max(<可迭代对象>, [键函数])
max(a,b,c,..., [键函数])
返回对象中的最大值或返回若干值中的最大值
键函数:考虑对每个元素执行键函数并根据返回值比较大小(返回原始值)
e.g. max(range(10), key=lambda x: 7-(x-4)*(x-2))
all
all(<可迭代对象>)
对每个元素执行bool(x)操作,若所有元素都返回True则返回True,否则返回False,空列表返回True
e.g. all([x<5 for x in range(5)]) 返回True
len
len(<可迭代对象>)
获取某个序列长度
有关string
string可以用于表示:数据、语言、程序
表示字符串
- 使用单引号
- 使用双引号
- 使用一对连续的三个双引号:可以跨行
string也是一种sequence
求解长度与选择元素与列表相同
获取到的string中的元素本身也是一个字符串,但只有它本身一个元素
in与not in可以在字符串中寻找连续字符
e.g. 'here' in 'where's waldo? 返回True
Dictionary
dictionary用于存储键值对,使用花括号和冒号分隔键值
创建:
numerals = {'I':1, 'V':5, 'X':10}
可以用数字,字符串当键值,列表或字典 当值
注意:键本身不能是列表或字典,键不能重复
查找:
输入对应的键来查找对应的值,但不能通过值查找键
numerals['V'] >>> 5
遍历:
dictionary是键的序列,通过list()创建列表可以获得所有的键,因此可以用for循环遍历所有的键
使用numerals.value()获得字典中所有的值,存储在一个序列中(非列表)
Dictionary Comprehensions
可以使用表达式来创建列表
格式:{<key exp>: <val exp> for <name> in <iter exp> if <filter exp>}
过程:
- 添加以当前作用域为父作用域的新作用域
- 建立一个空的result字典存储表达式的值
- 对每个
中的元素: - 在新作用域中将
绑定到每一个元素 - 若
为真,则将 与 配对并添加到result字典中
- 在新作用域中将
e.g.
{x*x: x for x in [1,2,3,4,5] if x>2}
结果为{9:3, 16:4, 25:3}