Skip to content

Latest commit

 

History

History
47 lines (35 loc) · 1.63 KB

File metadata and controls

47 lines (35 loc) · 1.63 KB

Advanced features

Slices

  • L[0:3]表示,从索引 0 开始取,直到索引 3 为止,但不包括索引 3
  • 如果第一个索引是 0 则可以省略
  • 使用负数取倒数的元素,最后一个元素的索引为-1
  • 第三个参数位为间隔,不写任何参数为负值参数
  • tuple 也可用切片操作,返回结果仍为 tuple
  • 字符串也可用切片操作,返回结果认为字符串

Iteration

  • 使用for...in迭代对象,只要是可迭代对象都可以迭代
  • 默认 dict 对象迭代 key,使用for value in d.values()迭代 value
  • 使用for k, v in d.items()同时迭代 key 与 value
  • 使用isinstance('abc', Iterable)判断对象能否迭代
  • 使用enumerate函数把一个 list 变成索引-元素对
for i, value in enumerate(['A', 'B', 'C']):
    print(i, value)

>>> 0 A
>>> 1 B
>>> 2 C

List generation

  • 生成元素在前,循环体在后面,循环体后面可加 if 语句[x * x for x in range(1, 11) if x % 2 == 0]
  • 可使用多层嵌套[m + n for m in 'ABC' for n in 'XYZ']
  • 循环体可迭代多个变量[k + '=' + v for k, v in d.items()]

Generator

  • 使用括号替换列表生成式的方括号
  • 使用next()获取生成器的下一个返回值
  • 使用for...in迭代生成器对象
  • 函数 return 语句替换成 yield 语句成为生成器
  • 捕获StopIteration错误,拿到生成器的返回值

Iterator

  • 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
  • 生成器都是迭代器,可迭代对象不一定是迭代器
  • ​ 凡是可作用于for循环的对象都是Iterable类型