Python CookBook | 数据结构与算法
将序列分解为单独的变量
问题:将一个包含N个元素的元组或者序列分解为N个单独的变量
对于多余的变量我们可以选一个用不到的变量名
1 | data = ["ACME", 50, 91.1, (2012, 12, 21)] |
1 | shares: 50 |
实际上只要对象恰好可迭代的,那么就可以执行分解操作。这包含字符串、文件、迭代器、以及生成器。
从任意长度的可迭代对象中分解元素
问题:需要从某个可迭代对象中分解N个元素,但是这个可迭代对象的长度可能超过N,这会导致出现“分解的值过多(too many values to unpack)”的异常。
使用Python的“*表达式”可以用来解决这个问题。
例如,假设开设一门课程,并决定在期末的作业成绩中去掉第一个和最后一个,只对中间剩下的成绩做平均分统计。
1 | def drop_first_last(grades): |
保留最后N个元素
问题:我们想在迭代或是其他形式的处理过程中,对最后几项记录做一个有限的历史记录。
1 | from collections import deque |
1 | deque([1, 2, 3], maxlen=3) |
找到最大或最小的N个元素
问题:在某个集合中找出最大或最小的N个元素。
1 | import heapq |
1 | [42, 37, 23] |