2011-05-21 34 views
1

如何使用列表理解这样做的:如何在Python中使用列表理解?

MCs= [['foo', 180.9], ['bar', 163.5], ['noo', 140.3]] 

使用旺旺

[['foo'], ['bar'], ['noo']] 

MCs = [list(x[0]) for x in MCs]

我得到这个:

[['f', 'o', 'o'], ['b', 'a', 'r'], ['n', 'o', 'o']] 

回答

6

你只需要这样:

MCs = [[x[0]] for x in MCs] 

字符串是可迭代的,并且list(iterable)返回由参数产生的元素列表(即字符,在这种情况下)。

3

使用此:

[[x[0]] for x in MCs] 

list(c)需要的东西一个收集和使得它成为一个列表。一个字符串是一个字符集合,这就是你所得到的一个字符列表。

1

要获得正是你问什么要这样做:

>>> [[x[0]] for x in MCs] 
[['foo'], ['bar'], ['noo']] 

但也许你真正想要的是这样的:

>>> [x[0] for x in MCs] 
['foo', 'bar', 'noo'] 
5

这是因为x[0]是如'foo'list将可迭代转换为包含可迭代项的列表 - 迭代一个字符串会一次产生一个字符。这与列表理解无关,如果您使用list('foo'),也会发生同样的情况。要创建单例列表,只需将表达式换成方括号即[[mc[0]] for mc in mcs]

1

试试这个为你的答案。

[[x[0],] for x in MCs] 

所以解剖你的列表理解:

for x in [['foo', 180.9], ['bar', 163.5], ['noo', 140.3]]: 
# x = ['foo', 180.9] first time through 
# x[0] = 'foo' 
# list(x[0]) = ['f','o','o'] 
0

使用Zip:

[[x] for x in zip(*MCs)[0]]