条件、循环及其他语句
需要了解的列表推导式、字典推导式、
lambda
匿名函数和关键字yield
。
print
和 import
- 打印多个参数
使用逗号分隔可以打印多个参数
1 | 'age: ', 22) print( |
(类似于 Java
中的字符串连接符 +
)
- 导入时重名
一般导入
1 | import somemodule |
当模块方法重名时,需要导入时指定别名,使用 as
1 | import math as foobar |
或:
1 | from math import sqrt as foobar |
赋值魔法
- 序列解包(可迭代对象解包)
1 | 1, 2, 3 x, y, z = |
利用这个特性,我们还可以实现快速的元素值交换:
1 | x, y = 1, 2 |
输出:
1 | 1 2 |
if
1 | if something: |
while
1 | while condition: |
for
1 | for some in somethings: |
迭代字典
1 | for key in item: |
或
1 | for key value in item.items(): |
迭代工具
- 索引获取
1 | name = ['akashi', 'asuka', 'gakki'] |
- 并行迭代
zip
将两个序列“缝合”,返回一个适合迭代的对象
1 | name = ['akashi', 'asuka', 'gakki'] |
输出:
1 | akashi : 22 |
- 迭代同时获取索引和元素
函数 enumerate
1 | name = ['akashi', 'asuka', 'gakki'] |
输出:
1 | 0 akashi |
列表推导式
快速生成列表
1 | res = [x**2 for x in range(10)] |
输出:
1 | [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] |
字典推导式
快速生成字典
1 | name = ['akashi', 'asuka', 'gakki'] |
输出:
1 | {'akashi': 22, 'asuka': 21, 'gakki': 30} |
或
1 | seq = [1, 2, 3, 4, 5, 6, 7, 8, 9] |
输出:
1 | {1: '2', 3: '4', 5: '6', 7: '8'} |
匿名函数 lambda
定义一个只使用一次的函数
1 | func = lambda x, y: x + y |
输出: 5
yield
可以将函数执行的中间结果返回但不结束程序
1 | def func(n): |
输出:
1 | 4 |
map()
遍历序列,对序列中的每一个元素进行操作,创建一个新的序列,结果返回新序列的对象,需传入一个函数操作:
1 | def func(x, y): |
输出:
1 | [5, 7, 9] |
或
1 | seq = [1, 2, 3] |
输出:
1 | [1, 4, 9] |
filter()
对序列中的元素进行筛选,返回符合条件的序列的对象,也需要传入函数操作:
1 | seq = [1, 2, 3] |
输出:
1 | [2, 3] |
reduce()
累计函数,在 python2
中是内置函数,python3
中需要从 functools
模块中导入
返回一个操作最终的值,需要传入一个操作的函数
1 | from functools import reduce |
输出: 6