是否有内置的python从多个列表创建元组?

| 是否有一个内置的python与一组列表的tupler相同,或类似的东西:
def tupler(arg1, *args):
    length = min([len(arg1)]+[len(x) for x in args])
    out = []
    for i in range(length):
        out.append(tuple([x[i] for x in [arg1]+args]))
    return out
因此,例如:
tupler([1,2,3,4],[5,6,7])
返回:
[(1,5),(2,6),(3,7)]
或者也许有适当的pythony方式做到这一点,或者是否有类似的发电机???     
已邀请:
我想您正在寻找
zip()
: >>> zip([1,2,3,4],[5,6,7]) [(1,5),(2,6),(3,7)]     
看一下内置的zip函数http://docs.python.org/library/functions.html#zip 它也可以处理两个以上的列表,例如n,然后创建n个元组。
>>> zip([1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14])
 [(1, 5, 9, 13), (2, 6, 10, 14)]
    
zip([1,2,3,4],[5,6,7])

--->[(1,5),(2,6),(3,7)]


args = [(1,5),(2,6),(3,7)]

zip(*args)

--->[1,2,3],[5,6,7]
    
正确的方法是使用
zip
功能。 或者,我们可以使用列表推导和内置的
enumerate
函数 达到相同的结果。
>>> L1 = [1,2,3,4]
>>> L2 = [5,6,7]
>>> [(value, L2[i]) for i, value in enumerate(L1) if i < len(L2)]
[(1, 5), (2, 6), (3, 7)]
>>> 
上例中的缺点是,我们并不总是在最小长度的列表上进行迭代。     

要回复问题请先登录注册