每个窍门或语言特性只能通过实例来验证,无需过多解释。虽然我已尽力使例子清晰,但它们中的一些仍会看起来有些复杂,这取决于你的熟悉程度。所以如果看过例子后还不清楚的话,标题能够提供足够的信息让你通过Google获取详细的内容。
列表按难度排序,常用的语言特征和技巧放在前面。
1.1 分拆
>>>a,b,c=1,2,3 >>>a,b,c (1,2,3) >>>a,b,c=[1,2,3] >>>a,b,c (1,2,3) >>>a,b,c=(2*i+1foriinrange(3)) >>>a,b,c (1,3,5) >>>a,(b,c),d=[1,(2,3),4] >>>a 1 >>>b 2 >>>c 3 >>>d 4
1.2 交换变量分拆
>>>a,b=1,2 >>>a,b=b,a >>>a,b (2,1)
1.3 拓展分拆 (Python 3下适用)
>>>a,*b,c=[1,2,3,4,5] >>>a 1 >>>b [2,3,4] >>>c 5
1.4 负索引
>>>a=[0,1,2,3,4,5,6,7,8,9,10] >>>a[-1] 10 >>>a[-3] 8
1.5 列表切片 (a[start:end])
>>>a=[0,1,2,3,4,5,6,7,8,9,10] >>>a[2:8] [2,3,4,5,6,7]
1.6 使用负索引的列表切片
>>>a=[0,1,2,3,4,5,6,7,8,9,10] >>>a[-4:-2] [7,8]
1.7 带步进值的列表切片 (a[start:end:step])
>>>a=[0,1,2,3,4,5,6,7,8,9,10] >>>a[::2] [0,2,4,6,8,10] >>>a[::3] [0,3,6,9] >>>a[2:8:2] [2,4,6]
1.8 负步进值得列表切片
>>>a=[0,1,2,3,4,5,6,7,8,9,10] >>>a[::-1] [10,9,8,7,6,5,4,3,2,1,0] >>>a[::-2] [10,8,6,4,2,0]
1.9 列表切片赋值
>>>a=[1,2,3,4,5] >>>a[2:3]=[0,0] >>>a [1,2,0,0,4,5] >>>a[1:1]=[8,9] >>>a [1,8,9,2,0,0,4,5] >>>a[1:-1]=[] >>>a [1,5]
1.10 命名切片 (slice(start, end, step))
>>>a=[0,1,2,3,4,5] >>>LASTTHREE=slice(-3,None) >>>LASTTHREE slice(-3,None,None) >>>a[LASTTHREE] [3,4,5]
1.11 zip打包解包列表和倍数
>>>a=[1,2,3] >>>b=['a','b','c'] >>>z=zip(a,b) >>>z [(1,'a'),(2,'b'),(3,'c')] >>>zip(*z) [(1,2,3),('a','b','c')]
1.12 使用zip合并相邻的列表项
>>>a=[1,2,3,4,5,6] >>>zip(*([iter(a)]*2)) [(1,2),(3,4),(5,6)] >>>group_adjacent=lambdaa,k:zip(*([iter(a)]*k)) >>>group_adjacent(a,3) [(1,2,3),(4,5,6)] >>>group_adjacent(a,2) [(1,2),(3,4),(5,6)] >>>group_adjacent(a,1) [(1,),(2,),(3,),(4,),(5,),(6,)] >>>zip(a[::2],a[1::2]) [(1,2),(3,4),(5,6)] >>>zip(a[::3],a[1::3],a[2::3]) [(1,2,3),(4,5,6)] >>>group_adjacent=lambdaa,k:zip(*(a[i::k]foriinrange(k))) >>>group_adjacent(a,3) [(1,2,3),(4,5,6)] >>>group_adjacent(a,2) [(1,2),(3,4),(5,6)] >>>group_adjacent(a,1) [(1,),(2,),(3,),(4,),(5,),(6,)]
1.13 使用zip和iterators生成滑动窗口 (n -grams)
>>>fromitertoolsimportislice >>>defn_grams(a,n): ...z=(islice(a,i,None)foriinrange(n)) ...returnzip(*z) ... >>>a=[1,2,3,4,5,6] >>>n_grams(a,3) [(1,2,3),(2,3,4),(3,4,5),(4,5,6)] >>>n_grams(a,2) [(1,2),(2,3),(3,4),(4,5),(5,6)] >>>n_grams(a,4) [(1,2,3,4),(2,3,4,5),(3,4,5,6)]
>>>m={'a':1,'b':2,'c':3,'d':4} >>>m.items() [('a',1),('c',3),('b',2),('d',4)] >>>zip(m.values(),m.keys()) [(1,'a'),(3,'c'),(2,'b'),(4,'d')] >>>mi=dict(zip(m.values(),m.keys())) >>>mi {1:'a',2:'b',3:'c',4:'d'}原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容