【问题标题】:How to create element pairs of two lists by iterating through them in parallel?如何通过并行迭代它们来创建两个列表的元素对?
【发布时间】:2013-05-18 21:16:27
【问题描述】:

我想并行遍历两个列表并创建元素对,如下所示。

我的代码:

q_node_roots = ['A', 'B', 'C']
s_node_roots = ['X', 'Y', 'Z']

for q_node_pair, s_node_pair in zip([q_node_roots, q_node_roots[1:]], 
                                    [s_node_roots, s_node_roots[1:]]):
    print q_node_pair, s_node_pair

预期输出:

['A', 'B'] ['X', 'Y']
['B', 'C'] ['Y', 'Z']

生成的输出:

['A', 'B', 'C'] ['X', 'Y', 'Z']
['B', 'C'] ['Y', 'Z']

【问题讨论】:

    标签: python list python-2.7 python-3.x


    【解决方案1】:
    >>> lis1 = ['A', 'B', 'C']
    >>> lis2 = ['X', 'Y', 'Z']
    >>> z1 = zip(lis1,lis1[1:])  #use itertools.izip in py2x for memory efficiency
    >>> z2 = zip(lis2,lis2[1:])
    >>> for x,y in zip(z1,z2):
    ...     print x,y
    
    ('A', 'B') ('X', 'Y')
    ('B', 'C') ('Y', 'Z')
    

    【讨论】:

    • 使用'for循环'实现相同的任何方法,因为大量计算是基于生成的每一对对执行的。
    • @ArunprasathShankar 我使用了一个 for 循环,顺便说一下,你可以在 py2x 中使用 itertools.izip 来获取迭代器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 2021-07-10
    • 2011-06-11
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多