python复习(一)


·参考

循环

ranger(100)表示0到99这一百个数
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
把list、dict、str等Iterable变成Iterator可以使用iter()函数

不可变对象

1>>> a = 'abc'
2>>> a.replace('a', 'A')
3'Abc'
4>>> a
5'abc'

列表(list)

1# 向列表追加元素  
2a = ['hello','h','a','b']
3a.append('world')
4# 删除列表最后一个元素
5a.pop()

切片

1# 从a[0]开始到a[2]
2a[0:3]
3# 或者,省略0
4a[:3]
5# 省略-1
6a[-2:]
7# 每两个取一个
8a[::2]

迭代

判断是否可迭代

1isinstance(x, Iterable)

下标循环

1>>> for i, value in enumerate(['A', 'B', 'C']):
2...     print(i, value)
3...
40 A
51 B
62 C

列表生成式

1>>> [x * x for x in range(1, 11)]
2[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
3# 或者
4>>> [x * x for x in range(1, 11) if x % 2 == 0]
5[4, 16, 36, 64, 100]
6# 使用两层循环,生成全排列
7>>> [m + n for m in 'ABC' for n in 'XYZ']
8['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

元组(tuple)

1# 只有一个元素时
2a = ('hello',)
3# 而不是
4a = ('hello')

字典(dict)

key不存在

如果key不存在,dict会报错 >>> a['hello'] Traceback (most recent call last): File "", line 1, in KeyError: 'hello' 可以用get方式避免报错,如果key不存在,返回None,或者自己指定的value >>> a.get('hello') >>> a.get('hello', -1) -1

删除key

1a.pop('hello')

set

key不会重复

1a = set([1,2,3])
2# 添加key到set
3a.add(4)
4# 删除key从set
5a.add(4)

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

1>>> s1 = set([1, 2, 3])
2>>> s2 = set([2, 3, 4])
3>>> s1 & s2
4{2, 3}
5>>> s1 | s2
6{1, 2, 3, 4}

迭代key和value

1for k,v in a.items():
2    print(k,v)

数据类型转化及内置函数

1# 转换函数
2int float str bool
3# 数据类型检查
4isinstance(x, (int, float))

generator

生成一个generator

1>>> g = (x * x for x in range(2))
2>>> g
3<generator object <genexpr> at 0x1022ef630>

输出generator

1>>> next(g)
20
3>>> next(g)
41
5>>> next(g)
6Traceback (most recent call last):
7  File "<stdin>", line 1, in <module>
8StopIteration

或者使用for

yield

可将函数输出转化为generator

函数

函数没有return,默认return None,简写为return
返回多个数return 'hello','world'其实质是一个tuple

可变参数

1def calc(numbers):
2    sum = 0
3    for n in numbers:
4        sum = sum + n * n
5    return sum

调用是需要使用list或tuple,calc([1,2,3])calc((1,2,3))
使用可变参数

1def calc(*numbers):
2    sum = 0
3    for n in numbers:
4        sum = sum + n * n
5    return sum

调用时就可以calc(1,2,3)
也可以将list或tuple传入

1>>> nums = [1, 2, 3]
2>>> calc(*nums)
314

关键字参数

1def person(name, age, **kw):
2    print('name:', name, 'age:', age, 'other:', kw)

调用时可以只传入nameage,或者传入任意个数的关键字参数

1>>> person('Michael', 30)
2name: Michael age: 30 other: {}
3>>> person('Adam', 45, gender='M', job='Engineer')
4name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

也可这样调用

1>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
2>>> person('Jack', 24, **extra)

命名关键字参数

如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。这种方式定义的函数如下:

1def person(name, age, *, city, job):
2    print(name, age, city, job)

参数组合

参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数

尾递归

作者: honmaple
链接: https://honmaple.me/articles/2016/03/python复习(一).html
版权: CC BY-NC-SA 4.0 知识共享署名-非商业性使用-相同方式共享4.0国际许可协议
wechat
alipay

加载评论