寻找缩短列表的功能

时间:2018-05-31 09:51:16

标签: python python-3.x list indexing wxpython-phoenix

wxPython中的一些小部件有一个方法,如" GetSelections()"它返回所选项目的索引列表。 拥有这个索引列表我可以得到一个项目列表。这样,例如:

>>> list_of_items = ['zero', 'one', 'two', 'three', 'four', 'five']
>>> list_of_indexes = [1,3,5]
>>> [list_of_items[e] for e in list_of_indexes]
['one', 'three', 'five']

所以问题是:最后一个字符串是否有快捷方式?类似的东西:

list_of_items.getitems(list_of_indexes)

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用的方法很少。

列表切片

[1, 3, 5]替换为等效的slice对象:

list_of_items = ['zero', 'one', 'two', 'three', 'four', 'five']
list_of_indexes = slice(1, 6, 2)

res = list_of_items[list_of_indexes]

Itemgetter

如果您需要提供无法由slice表示的列表,您可以使用operator.itemgetter

from operator import itemgetter

list_of_items = ['zero', 'one', 'two', 'three', 'four', 'five']
list_of_indexes = [1, 3, 5]

res = itemgetter(*list_of_indexes)(list_of_items)

print(res)

('one', 'three', 'five')

numpy的

第三方库numpy直接支持您所需的索引语法:

import numpy as np

list_of_items = ['zero', 'one', 'two', 'three', 'four', 'five']
list_of_indexes = [1,3,5]

res = np.array(list_of_items)[list_of_indexes].tolist()