2017-04-06 123 views
1

我试图[X,Y]转换成两份名单[X]和[Y]转换[X,Y]分开[X] [Y]列表

尝试下面的代码:

a = [[[0.322, 0.219], [0.334, 0.159], [0.321, 0.139], [0.37, 0.068], 
[0.435, 0.222],[0.146, 0.152], [0.156, 0.027], [0.156, 0.19], [0.269, 
0.124], [0.239, 0.082], [0.22, 0.201]]] 

from operator import itemgetter 
a1,b = map(itemgetter(0),a), map(itemgetter(1),a) 
print(a1,b) 
a1,b = map(list,a) 

其捐赠以下错误:ValueError异常:值过多解压(预期2

回答

4

这个怎么样:

a =[[0.322, 0.219], [0.334, 0.159], [0.321, 0.139], [0.37, 0.068], 
[0.435, 0.222],[0.146, 0.152], [0.156, 0.027], [0.156, 0.19], [0.269, 
0.124], [0.239, 0.082], [0.22, 0.201]] 

b,c = map(list, zip(*a))) 

b,c = list(zip(*a)) 

这或许应该工作以及:

b,c = zip(*a) 
0
x = [item[0] for item in a[0]] 
y = [item[1] for item in a[0]] 
2

你有一组额外的,我删除,你可以使用numpy的这个括号:

import numpy as np 

a = [[0.322, 0.219], [0.334, 0.159], [0.321, 0.139], [0.37, 0.068], 
[0.435, 0.222],[0.146, 0.152], [0.156, 0.027], [0.156, 0.19], [0.269, 
0.124], [0.239, 0.082], [0.22, 0.201]] 

a = np.array(a) 

print a 

a = np.rot90(a) 

print a[0] 
print a[1] 

>>> 
[[ 0.322 0.219] 
[ 0.334 0.159] 
[ 0.321 0.139] 
[ 0.37 0.068] 
[ 0.435 0.222] 
[ 0.146 0.152] 
[ 0.156 0.027] 
[ 0.156 0.19 ] 
[ 0.269 0.124] 
[ 0.239 0.082] 
[ 0.22 0.201]] 
[ 0.219 0.159 0.139 0.068 0.222 0.152 0.027 0.19 0.124 0.082 
    0.201] 
[ 0.322 0.334 0.321 0.37 0.435 0.146 0.156 0.156 0.269 0.239 
    0.22 ] 

文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.rot90.html

然后回到列表格式:

x_list = a[0].tolist() 
y_list = a[1].tolist() 
0

你也可以使用理解来分解它。

a = [[[0.322, 0.219], [0.334, 0.159], [0.321, 0.139], [0.37, 0.068], 
[0.435, 0.222],[0.146, 0.152], [0.156, 0.027], [0.156, 0.19], [0.269, 
0.124], [0.239, 0.082], [0.22, 0.201]]] 

a1,b = [ i[0] for i in a[0]],[ i[1] for i in a[0]] 

print(a1,b) 

上面保留了原始问题的所有括号。如果你确实有无意的额外设置,那么你可以用它来建立列表

a1,b = [ i[0] for i in a],[ i[1] for i in a] 
相关问题