有没有办法从单个列表推导表达式输出多个列表?

Fra*_*Fra 3 python

就像是

x, y = [expression for d in data]
Run Code Online (Sandbox Code Playgroud)

基本上我想获得相当于这个:

x = []
y = []
for d in data:
    x.append(d[0])
    y.append(d[1])
Run Code Online (Sandbox Code Playgroud)

data嵌套列表在哪里?

如果数据是字典列表怎么办?

x = []
y = []
for d in data:
    x.append(d['key1'])
    y.append(d['key2'])
Run Code Online (Sandbox Code Playgroud)

如果我想对数据是字典列表的每一列应用不同的函数怎么办?

x = []
y = []
for d in data:
    x.append(func1(d['key1']))
    y.append(func2(d['key2']))
Run Code Online (Sandbox Code Playgroud)

Jor*_*ley 8

x, y = zip(*[d[:2] for d in data])
Run Code Online (Sandbox Code Playgroud)

我想你想要的是...它会给你一个x列表和y列表

如果数据中的每一行只有d [0]和d [1]那么你可以这样做

x1,x2,x3 = 1,2,3
y1,y2,y3 = 3,4,5
data = [(x1,y1),(x1,y2),(x3,y3)]
x,y = zip(*data)
Run Code Online (Sandbox Code Playgroud)

如果你有一个字典

from operator import itemgetter
x,y,z = zip(*map(itemgetter('key1','key2','key3'),data))
Run Code Online (Sandbox Code Playgroud)

如果你想应用一个你需要做的功能

x,y = zip(*[(function1(row['key']),function2(row['key2'])) for row in data])
Run Code Online (Sandbox Code Playgroud)