2013-04-29 67 views
2

我是新来的python。如何可以改变一个数组是这样的:变换阵列列表

x=[[0.3], [0.07], [0.06]] 

到:

x=[0.3,0.07, 0.06] 

? 在此先感谢。

回答

5

下面的列表理解可能是有用的。

>>> x=[[0.3], [0.07], [0.06]] 
>>> y = [a for [a] in x] 
>>> y 
[0.3, 0.07, 0.06] 

考虑到内部值的类型也是list

cdhowie给出的相似但更易读的代码如下。

>>> x=[[0.3], [0.07], [0.06]] 
>>> y = [a[0] for a in x] 
>>> y 
[0.3, 0.07, 0.06] 
+2

或'y = [a [0] for a x]',这是等价的,假设输入元素是列表而不是其他可索引对象。 – cdhowie 2013-04-29 16:24:16

+0

是的。这也是一个等价的方法。你介意我是否给你加标签并在答案中加入?可能对其他人有帮助。 – 2013-04-29 16:25:22

+0

完全没有办法。 – cdhowie 2013-04-29 16:25:48

4

这是一个典型的利用itertools.chain.from_iterable

from itertools import chain 
print list(chain.from_iterable(x)) 

如果这个例子中真正的亮点是,当你有一个可迭代的任意长度iterables里面:

[[0],[12,15],[32,24,101],[42]] 
0
new_x = [] 
for elem in x: 
    new_x.extend(elem) 

这适用于任意数量的每子表的元素。

+0

Tnx F3AR3DLEGEND,它的作品呢! – 2013-04-29 16:48:38