Python值不在列表中

时间:2014-01-13 17:58:14

标签: python list

我有一个如下所示的列表:

[(0.2, 'Item1'),(0.25,'Item2'),(0.23,'Item3')]

我想要一个看起来像这样的列表。

['Item1','Item2','Item3']

你能帮我吗?

5 个答案:

答案 0 :(得分:3)

列表理解就是您所需要的:

[t[1] for t in inputlist]

选择每隔一个项目。或者,映射列表(Python 3在这里返回一个迭代器,所以要小心):

from operator import itemgetter

map(itemgetter(1), inputlist)

或者您可以使用-1选择每个元组的 last 元素:

[t[-1] for t in inputlist]

或者你可以使用元组赋值:

[item for ratio, item in inputlist]

或者您可能会非常模糊并使用zip()转置列和行:

zip(*inputlist)[-1]

虽然后者返回元组而不是列表。

演示:

>>> inputlist = [(0.2, 'Item1'), (0.25, 'Item2'), (0.23, 'Item3')]
>>> [t[1] for t in inputlist]
['Item1', 'Item2', 'Item3']
>>> from operator import itemgetter
>>> map(itemgetter(1), inputlist)
['Item1', 'Item2', 'Item3']
>>> [t[-1] for t in inputlist]
['Item1', 'Item2', 'Item3']
>>> [item for ratio, item in inputlist]
['Item1', 'Item2', 'Item3']
>>> zip(*inputlist)[-1]
('Item1', 'Item2', 'Item3')

答案 1 :(得分:2)

import operator
map(operator.itemgetter(-1), your_list)

演示:

>>> items = [(0.2, 'Item1'),(0,25,'Item2'),(0.23,'Item3')]
>>> import operator
>>> map(operator.itemgetter(-1), items)
['Item1', 'Item2', 'Item3']

另一种选择是列表理解:

>>> [x[-1] for x in items]
['Item1', 'Item2', 'Item3']

如果你的意思是(0.25, 'Item2')而不是(0, 25, 'Item2'),你也可以在下标/项目中使用1(第二个元素)而不是-1(最后一个元素)。< / p>

答案 2 :(得分:2)

列表理解应该没问题:

>>> [item for (num, item) in yourlist]
['Item1', 'Item2', 'Item3']

答案 3 :(得分:1)

使用list comprehension

>>> lst = [(0.2, 'Item1'), (0.25, 'Item2'), (0.23, 'Item3')]
>>> [x[1] for x in lst]
['Item1', 'Item2', 'Item3']
>>> [x for _,x in lst] # alternately
['Item1', 'Item2', 'Item3']
>>>

答案 4 :(得分:0)

items = [(0.2, 'Item1'), (0.25, 'Item2'), (0.23, 'Item3')]
print(dict(items).values())

['Item2', 'Item3', 'Item1']

如果需要物品的顺序:

from collections import OrderedDict

items = [(0.2, 'Item1'), (0.25, 'Item2'), (0.23, 'Item3')]
print(OrderedDict(items).values())

['Item1', 'Item2', 'Item3']