itertools.compress()函数适用于需要一个关联序列来过滤另一个序列的情况。它以一个iterable对象和一个相对应的Boolean选择器序列作为输入参数,输出iterable对象中对应选择器为True的元素。

    1. from itertools import compress
    2. addresses = [
    3. "5412 N CLARK",
    4. "5148 N CLARK",
    5. "5800 E 58TH",
    6. "2122 N CLARK",
    7. "5645 N RAVENSWOOD",
    8. "1060 W ADDISON",
    9. "4801 N BROADWAY",
    10. "1039 W GRANVILLE",
    11. ]
    12. counts = [0, 3, 10, 4, 1, 7, 6, 1]
    13. # 输出addresses对应count大于5的所有地址
    14. more5 = [n > 5 for n in counts]
    15. n_addresses = list(compress(addresses, more5))
    16. print(n_addresses) # ["5800 E 58TH", "1060 W ADDISON", "4801 N BROADWAY"]