![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
文章平均质量分 65
shinestaryu
这个作者很懒,什么都没留下…
展开
-
1.1 解压序列到多个变量
1.1 解压序列到多个变量问题你有一个有N个元素的元组或序列,但你想把这N个元素解压到N个变量中。解决方法任何序列(或迭代器)都可以使用一个简单的赋值操作解压到多个变量中,唯一要求是变量的个数和结构和序列一致,比如:>>> p = (4, 5)>>> x, y = p>>> x4>>> y5>>>>>> data = [ 'ACME', 50翻译 2014-09-29 20:30:15 · 403 阅读 · 0 评论 -
1.2.从任意长度的迭代中解压元素
问题想从iterable中解压N个元素,但iterable元素可能多于N个,会导致“to many values to unpack”的异常。解决方法Python的表达式(star expression)可被用来解决这个问题。举例,假如你课程并决定在学期结束时放弃最高和最低分,只取剩下的平均分,如果只有4门课程,你可以简单的加压所有的4门,但是如果有24门课程呢?表达式可以翻译 2014-09-29 20:33:04 · 641 阅读 · 0 评论 -
1.13.使用Key对字典排序
问题如何对字典中的一个或者多个值排序?解决方法operator.itemgetter()方法。假如有以下数据:rows = [ {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'David', 'lname': 'Beazley', 'uid': 1002},翻译 2014-09-29 20:38:49 · 1271 阅读 · 0 评论 -
1.9.两个字典中相同的Key-Value查询
问题有两个字典,你想知道它们那些key-value是相同的。解决方法比如有以下两个字典:a = { 'x' : 1, 'y' : 2, 'z' : 3}b = { 'w' : 10, 'x' : 11, 'y' : 2}可使用keys()或者items()方法:# Find keys in common翻译 2014-09-29 20:38:01 · 5485 阅读 · 0 评论 -
1.11.命名一个slice
问题你的程序变成了没法阅读的脏乱不堪的硬编码切片片段,而你想梳理干净它。解决方法假设你有些从记录的字符串中读取特定field数据的代码(比如,flat文件或者类似结构的):###### 0123456789012345678901234567890123456789012345678901234567890'record = '...............翻译 2014-09-29 20:37:37 · 442 阅读 · 0 评论 -
1.6.在字典中映射Key到多个Value
问题multidict的实现?(映射Key到多个Value)解决方法字典是单个Key到Value的映射。如果想多Key多Value,那么可以把多个Value存放到容器中(list,set),比如:d = { 'a' : [1, 2, 3], 'b' : [4, 5]}e = { 'a' : {1, 2, 3}, 'b' : {4, 5}翻译 2014-09-29 20:35:38 · 741 阅读 · 0 评论 -
1.12.在序列中查找出现次数最多的元素
解决方法collections.Counter类就是为此设计的,它甚至提供了most_common()方法来解决你的问题。举个例子,查找words中的出现次数最多的词:words = [ 'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes', 'the', 'eyes', 'the', 'eyes'翻译 2014-09-29 20:39:51 · 645 阅读 · 0 评论 -
1.10.移除重复序列同时维持排序
问题如何移除重复数据的同时,保持既有排序?解决方法如果序列中的值是哈希过的,这个问题可同set和generator轻易解决,例如:def dedupe(items): seen = set() for item in items: if item not in seen: yield item翻译 2014-09-29 20:38:36 · 598 阅读 · 0 评论 -
1.3.保留最后N个元素
问题在某些迭代或者其他一些执行操作的时候,如何保留限制个数的历史记录?解决方法使用collection.deque是解决保留限制历史记录个数的完美解决方案,比如,下面这段代码就是查找一个简单文本中特定的字符串并保留前N句的示例:from collections import dequedef search(lines, pattern, history=5):翻译 2014-09-29 20:33:56 · 645 阅读 · 0 评论 -
1.8.使用字典计算
问题你想在字典中执行大量计算(例如,最小值,最大值,排序,etc)解决方法假如有如下股票价格的字典:prices = { 'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, 'FB': 10.75}为了执行有用的计算,通常使用zip()方法转换字典中的k翻译 2014-09-29 20:37:27 · 669 阅读 · 0 评论 -
1.7.保持字典排序
问题在访问或者序列化字典时控制排序。解决方法使用collections模块中的OrderedDict,它保持字典插入时的排序:from collections import OrderedDictd = OrderedDict()d['foo'] = 1d['bar'] = 2d['spam'] = 3d['grok'] = 4# Outputs "f翻译 2014-09-29 20:36:13 · 461 阅读 · 0 评论 -
1.4.查找最大或最小的N个元素
问题如何在一个集合中查找最大或者最小的N个元素?解决方法heapq模块有两个函数——nlargest()和nsmallest(),例如:import heapqnums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]print(heapq.nlargest(3, nums)) # Prints [42, 37, 23]p翻译 2014-09-29 20:34:30 · 594 阅读 · 0 评论 -
1.5.实现一个优先队列
问题如何实现一个按给定值优先排序,并按优先值返回的queue?解决方法以下代码使用heapq模块实现了这样的queue:import heapqclass PriorityQueue: def __init__(self): self._queue = [] self._index = 0 def push(se翻译 2014-09-29 20:35:03 · 487 阅读 · 0 评论