如何将元组分为两个列表?

时间:2020-05-15 00:19:50

标签: python

下面的函数'url' : 'https://my-service.my-domain.com/resource'接受一个数字并返回一个字符串元组。我可以单线编写以下循环吗?

foo

4 个答案:

答案 0 :(得分:2)

我会做这样的事情:

def foo(i):
    return (i,i+1)
r1, r2 = [tpl for tpl in zip(*map(foo,range(10)))]

答案 1 :(得分:1)

这应该做到:

r1, r2 = map(list, zip(*[foo(i) for i in range(10)]))

通过将元组列表作为args传递给zip(使用*将列表转换为args列表),可以“解压缩”它们。将list函数映射到结果元组上,您就有两个列表。

答案 2 :(得分:1)

您只需要执行以下简单操作

r1, r2 = map(list, zip(*foo))

答案 3 :(得分:0)

def foo(i):
    return ("A%d" % i, "B%d" % i)

# This is the one-liner
[r1, r2] = map(list, zip(*(foo(i) for i in range(10))))

print(r1)
print(r2)

zip接受M个N个项目的序列,并返回N个M个项目的序列。通过将由comprehension表达式生成的序列放在*之前,我将其转换为两个元素的10个单独的序列。映射到list只是为了将所有结果都放入列表中。