Python:子集多个元素

2 投票
4 回答
869 浏览
提问于 2025-04-16 22:37

给定以下内容:

mylist = ["a", "b", "c"]

我该如何提取第0个和第2个元素(也就是["a", "c"])呢?

4 个回答

2

这里有一个解决方案(在众多方案中):

[mylist[i] for i in [0, 2]]
3

如果你想要更高级的索引方式,可以使用 numpy 数组。

>>> mylist = ["a", "b", "c"]
>>> import numpy
>>> myarray = numpy.array(mylist)
>>> myarray
array(['a', 'b', 'c'], 
      dtype='|S1')
>>> myarray[[0,2]]
array(['a', 'c'], 
      dtype='|S1')
8

虽然这不是使用itemgetter的常规方法,

>>> from operator import itemgetter
>>> mylist = ["a", "b", "c"]
>>> itemgetter(0,2)(mylist)
('a', 'c')

如果索引已经在一个列表里,可以用*来展开它

>>> itemgetter(*[0,2])(mylist)
('a', 'c')

你也可以使用列表推导式

>>> [mylist[idx] for idx in [0,2]]
['a', 'c']

或者使用map

>>> map(mylist.__getitem__, [0,2])
['a', 'c']

撰写回答