1 用*来获取不确定数量的参数
用*来获取不确定数量的参数
>>> a, b, *c = range(5)
>>> a, b, c
(0, 1, [2, 3, 4])
2 用*运算符来把一个可迭代对象的参数拆开作为函数的参数
用*运算符来把一个可迭代对象的参数拆开作为函数的参数
>>> divmod(20, 8)
(2, 4)
>>> t = (20, 8)
>>> divmod(*t)
(2, 4)
3 具名元组
定义和使用具名元组需要两个参数,一个是类名,一个是类的各个字段的名字,另一个是由多个字符串组成的可迭代对象,或者由空格分隔开的字段名组成的字符串
>>> from collections import namedtuple
>>> # 字符串的可迭代
>>> Card = namedtuple('Card', ['rank', 'suit'])
>>> # 空格分隔的字符串
>>> City = namedtuple('City', "name country population coordinates")
>>> tokyo = City("tokyo", "JP", 36.93, (35.69, 139.69))
>>> tokyo.country
'JP'
>>> tokyo.coordinates
(35.69, 139.69)
>>> tokyo[0]
'tokyo'
>>> City._fields
('name', 'country', 'population', 'coordinates')
4 直接交换变量
python 交换变量,无需中间变量
>>> a, b = (1, 2)
>>> b, a = a, b
>>> a, b
(2, 1)
5 对对象进行切片
s[a:b:c]在a与b之间每隔c取值,c可以是负值
>>> s = "hello, world!"
>>> s[::3]
'hl r!'
>>> s[::-1]
'!dlrow ,olleh'
6 对序列使用+和*
对序列使用+和*对会创建新序列,而不修改原来的序列
>>> a = [1, 2, 3]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> a
[1, 2, 3]
7 bisect来管理有序序列
bisect(haystack, needle)返回插入的位置, insort(seq, item)进行插入操作
>>> import bisect
>>> import random
>>> a = [1, 48, 12, 34, 4, 8]
>>> a = sorted(a)
>>> a
[1, 4, 8, 12, 34, 48]
>>> bisect.bisect(a, 5)
2
>>> bisect.insort(a, 5)
>>> a
[1, 4, 5, 8, 12, 34, 48]
网友评论