像
这样的东西x, y = [expression for d in data]
基本上我想获得相当于:
x = []
y = []
for d in data:
x.append(d[0])
y.append(d[1])
其中data
是嵌套列表吗?
如果数据是字典列表怎么办?
x = []
y = []
for d in data:
x.append(d['key1'])
y.append(d['key2'])
如果我想对数据是字典列表的每一列应用不同的函数怎么办?
x = []
y = []
for d in data:
x.append(func1(d['key1']))
y.append(func2(d['key2']))
答案 0 :(得分:8)
x, y = zip(*[d[:2] for d in data])
我认为这就是你想要的...它会给你一个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)
如果你有一个词典
from operator import itemgetter
x,y,z = zip(*map(itemgetter('key1','key2','key3'),data))
如果你想申请一个你需要做的功能
x,y = zip(*[(function1(row['key']),function2(row['key2'])) for row in data])
答案 1 :(得分:1)
In [53]: dta = [[1,2], [3,4], [5,6]]
In [54]: dta
Out[54]: [[1, 2], [3, 4], [5, 6]]
In [55]: zip(*dta)
Out[55]: [(1, 3, 5), (2, 4, 6)]
In [56]: x,y = zip(*dta)
In [57]: x
Out[57]: (1, 3, 5)
In [58]: y
Out[58]: (2, 4, 6)