首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取项目在列表中的位置?

如何获取项目在列表中的位置?
EN

Stack Overflow用户
提问于 2008-12-13 01:20:33
回答 10查看 591.6K关注 0票数 181

我正在迭代一个列表,如果它满足某个条件,我想打印出项的索引。我该怎么做呢?

示例:

代码语言:javascript
复制
testlist = [1,2,3,5,3,1,2,1,6]
for item in testlist:
    if item == 1:
        print position
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-12-13 03:28:26

嗯。这里有一个带有列表理解的答案,但它消失了。

这里:

代码语言:javascript
复制
 [i for i,x in enumerate(testlist) if x == 1]

示例:

代码语言:javascript
复制
>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]

更新:

好的,如果你想要一个生成器表达式,我们就有一个生成器表达式。下面是在for循环中的列表理解:

代码语言:javascript
复制
>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
...     print i
... 
0
5
7

现在我们将构建一个生成器。

代码语言:javascript
复制
>>> (i for i,x in enumerate(testlist) if x == 1)
<generator object at 0x6b508>
>>> for i in (i for i,x in enumerate(testlist) if x == 1):
...     print i
... 
0
5
7

而且足够巧妙的是,我们可以将其赋值给一个变量,然后从那里使用它。

代码语言:javascript
复制
>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
... 
0
5
7

想想我曾经写过FORTRAN。

票数 293
EN

Stack Overflow用户

发布于 2012-04-22 17:35:15

下面的内容呢?

代码语言:javascript
复制
print testlist.index(element)

如果您不确定要查找的元素是否确实在列表中,则可以添加初步检查,例如

代码语言:javascript
复制
if element in testlist:
    print testlist.index(element)

代码语言:javascript
复制
print(testlist.index(element) if element in testlist else None)

或者是"pythonic方式“,我不太喜欢这种方式,因为代码不那么清晰,但有时效率更高。

代码语言:javascript
复制
try:
    print testlist.index(element)
except ValueError:
    pass
票数 186
EN

Stack Overflow用户

发布于 2008-12-13 01:37:47

使用枚举:

代码语言:javascript
复制
testlist = [1,2,3,5,3,1,2,1,6]
for position, item in enumerate(testlist):
    if item == 1:
        print position
票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/364621

复制
相关文章

相似问题

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