首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从列表或元组中显式选择项

从列表或元组中显式选择项
EN

Stack Overflow用户
提问于 2011-07-09 09:49:10
回答 7查看 370.8K关注 0票数 139

我有以下Python列表(也可以是元组):

代码语言:javascript
复制
myList = ['foo', 'bar', 'baz', 'quux']

我可以说

代码语言:javascript
复制
>>> 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语法可以做到这一点?看起来像这样:

代码语言:javascript
复制
>>> myBigList[87, 342, 217, 998, 500]
EN

回答 7

Stack Overflow用户

发布于 2011-07-09 09:52:45

这样如何:

代码语言:javascript
复制
from operator import itemgetter
itemgetter(0,2,3)(myList)
('foo', 'baz', 'quux')
票数 56
EN

Stack Overflow用户

发布于 2011-07-09 10:00:53

也许列表理解是按顺序进行的:

代码语言:javascript
复制
L = ['a', 'b', 'c', 'd', 'e', 'f']
print [ L[index] for index in [1,3,5] ]

产生:

代码语言:javascript
复制
['b', 'd', 'f']

这就是你要找的吗?

票数 13
EN

Stack Overflow用户

发布于 2011-07-09 09:57:36

它不是内置的,但是如果你愿意,你可以创建一个接受元组作为“索引”的list的子类:

代码语言:javascript
复制
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]

打印

代码语言:javascript
复制
foo
['baaz', 'mumble']
['bar', 'quux']
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6632188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档