我有以下Python列表(也可以是元组):
myList = ['foo', 'bar', 'baz', 'quux']
我可以说
>>> myList[0:3]
['foo', 'bar', 'baz']
>>> myList[::2]
['foo', 'baz']
>>> myList[1::2]
['bar', 'quux']
如何显式挑选索引没有特定模式的项目?例如,我想选择[0,2,3]
。或者从一个非常大的1000个项目列表中,我想选择[87, 342, 217, 998, 500]
。有没有一些Python语法可以做到这一点?看起来像这样:
>>> myBigList[87, 342, 217, 998, 500]
发布于 2011-07-09 09:52:45
这样如何:
from operator import itemgetter
itemgetter(0,2,3)(myList)
('foo', 'baz', 'quux')
发布于 2011-07-09 10:00:53
也许列表理解是按顺序进行的:
L = ['a', 'b', 'c', 'd', 'e', 'f']
print [ L[index] for index in [1,3,5] ]
产生:
['b', 'd', 'f']
这就是你要找的吗?
发布于 2011-07-09 09:57:36
它不是内置的,但是如果你愿意,你可以创建一个接受元组作为“索引”的list的子类:
class MyList(list):
def __getitem__(self, index):
if isinstance(index, tuple):
return [self[i] for i in index]
return super(MyList, self).__getitem__(index)
seq = MyList("foo bar baaz quux mumble".split())
print seq[0]
print seq[2,4]
print seq[1::2]
打印
foo
['baaz', 'mumble']
['bar', 'quux']
https://stackoverflow.com/questions/6632188
复制相似问题