zip(iter1 [,iter2 [...]]) --> zip object , 返回一个迭代器, 元素为每一个iter的对应元组
heapq实现优先级队列
import heapq class PriorityQueue: def __init__(self): self._queue = [] self._index = 0 def push(self, item, priority): heapq.heappush(self._queue, (-priority, self._index, item)) self._index += 1 def pop(self): return heapq.heappop(self._queue)[-1]
字典的最值运算
zip() 函数创建的是一个只能访问一次的迭代器 min_price = min(zip(prices.values(), prices.keys())) max_price = max(zip(prices.values(), prices.keys())) prices_sorted = sorted(zip(prices.values(), prices.keys()))
Python的set集合可以进行加、减、并、交、差运算
内建的 filter() 函数 进行数据过滤
values = ['1', '2', '-3', '-', '4', 'N/A', '5'] def is_int(val): try: x = int(val) return True except ValueError: return False ivals = list(filter(is_int, values)) # itertools.compress 类似pandas的操作 from itertools import compress more5 = [n > 5 for n in counts] [False, False, True, False, False, True, True, False] list(compress(addresses, more5))
将一个字符串分割为多个字段,但是分隔符(还有周围的空格)并不是固定的
string 对象的split() 方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或者是分隔符周围不确定的空格。 当你需要更加灵活的切割字符串的时候,最好使用 re.split() 方法 import re line = 'asdf fjdk; afed, fjek,asdf, foo' re.split(r'[;,\s]\s*', line)
字符串中搜索和匹配指定的文本模式, 并执行替换
1.str.repalce() 2.re 模块中的 sub() 函数 text = 'Today is 11/27/2012. PyCon starts 3/13/2013.' import re re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text) # 反斜杠数字比如\3 指向前面模式的捕获组号