itertools.compress()函数适用于需要一个关联序列来过滤另一个序列的情况。它以一个iterable对象和一个相对应的Boolean选择器序列作为输入参数,输出iterable对象中对应选择器为True的元素。
from itertools import compressaddresses = ["5412 N CLARK","5148 N CLARK","5800 E 58TH","2122 N CLARK","5645 N RAVENSWOOD","1060 W ADDISON","4801 N BROADWAY","1039 W GRANVILLE",]counts = [0, 3, 10, 4, 1, 7, 6, 1]# 输出addresses对应count大于5的所有地址more5 = [n > 5 for n in counts]n_addresses = list(compress(addresses, more5))print(n_addresses) # ["5800 E 58TH", "1060 W ADDISON", "4801 N BROADWAY"]
