开发者社区> 问答> 正文

不同集合上元素的迭代

你想在多个对象执行相同的操作,但是这些对象在不同的容器中,你希望代码在不失可读性的情况下避免写重复的循环。

展开
收起
哦哦喔 2020-04-16 21:53:13 978 0
1 条回答
写回答
取消 提交回答
  • itertools.chain() 方法可以用来简化这个任务。 它接受一个可迭代对象列表作为输入,并返回一个迭代器,有效的屏蔽掉在多个容器中迭代细节。 为了演示清楚,考虑下面这个例子:
    
    >>> from itertools import chain
    >>> a = [1, 2, 3, 4]
    >>> b = ['x', 'y', 'z']
    >>> for x in chain(a, b):
    ... print(x)
    ...
    1
    2
    3
    4
    x
    y
    z
    >>>
    使用 chain() 的一个常见场景是当你想对不同的集合中所有元素执行某些操作的时候。比如:
    
    # Various working sets of items
    active_items = set()
    inactive_items = set()
    
    # Iterate over all items
    for item in chain(active_items, inactive_items):
        # Process item
    这种解决方案要比像下面这样使用两个单独的循环更加优雅,
    
    for item in active_items:
        # Process item
        ...
    
    for item in inactive_items:
        # Process item
        ...
    
    2020-04-16 21:53:28
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载