如何在Python中使用列表理解?
问题描述:
如何使用列表理解这样做的:如何在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']]
答
你只需要这样:
MCs = [[x[0]] for x in MCs]
字符串是可迭代的,并且list(iterable)
返回由参数产生的元素列表(即字符,在这种情况下)。
答
使用此:
[[x[0]] for x in MCs]
list(c)
需要的东西一个收集和使得它成为一个列表。一个字符串是一个字符集合,这就是你所得到的一个字符列表。
答
要获得正是你问什么要这样做:
>>> [[x[0]] for x in MCs]
[['foo'], ['bar'], ['noo']]
但也许你真正想要的是这样的:
>>> [x[0] for x in MCs]
['foo', 'bar', 'noo']
答
这是因为x[0]
是如'foo'
和list
将可迭代转换为包含可迭代项的列表 - 迭代一个字符串会一次产生一个字符。这与列表理解无关,如果您使用list('foo')
,也会发生同样的情况。要创建单例列表,只需将表达式换成方括号即[[mc[0]] for mc in mcs]
。
答
试试这个为你的答案。
[[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']
答
使用Zip:
[[x] for x in zip(*MCs)[0]]