列表生成式
a = [1, 2, 3, 4, -1, -2] b = [i for i in a if a > 0]
如果数据量很大,会产生一个庞大的结果。这时可以用生成器表达式:
b = (i for i in a if a > 0)
如果筛选的过程中涉及一些复杂的细节,可以使用内建的 filter() 函数:
values = ['1', '2', '3', 'N/A', '-', 5] def is_int(val): try: x = int(val) return True except ValueErroe: return False ivals = list(filter(is_int, values))
根据一个布尔值序列筛选另一个序列:
addresses = [ '5412 N CLARK', '5148 N CLARK', '5800 E 58TH' ] counts = [0, 3, 5]
现在构建一个地址列表,count 值要大于3:
from itertools import compress more3 = [n>3 for n in counts] list(compress(addresses, more3))