为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

莫回无 2019-12-09 12:45:40
我正在遍历列表,如果满足特定条件,我想打印出该项目的索引。我该怎么做?例:testlist = [1,2,3,5,3,1,2,1,6]for item in testlist:    if item == 1:        print position
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

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


这里:


 [i for i,x in enumerate(testlist) if x == 1]

例:


>>> testlist

[1, 2, 3, 5, 3, 1, 2, 1, 6]

>>> [i for i,x in enumerate(testlist) if x == 1]

[0, 5, 7]

更新:


好的,您需要一个生成器表达式,我们将有一个生成器表达式。再次在for循环中,这是列表理解:


>>> for i in [i for i,x in enumerate(testlist) if x == 1]:

...     print i

... 

0

5

7

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


>>> (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

令人高兴的是,我们可以将其分配给变量,然后从那里使用它...


>>> gen = (i for i,x in enumerate(testlist) if x == 1)

>>> for i in gen: print i

... 

0

5

7

并且以为我曾经写过FORTRAN。


查看完整回答
反对 回复 2019-12-09
?
呼如林

TA贡献1798条经验 获得超3个赞

接下来呢?


print testlist.index(element)

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


if element in testlist:

    print testlist.index(element)

要么


print(testlist.index(element) if element in testlist else None)

或“ pythonic方式”,我不太喜欢它,因为代码不太清晰,但有时效率更高,


try:

    print testlist.index(element)

except ValueError:

    pass


查看完整回答
反对 回复 2019-12-09
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

使用枚举:


testlist = [1,2,3,5,3,1,2,1,6]

for position, item in enumerate(testlist):

    if item == 1:

        print position


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 474 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信