Python:在列表中搜索整数

3

假设我有这个列表:

x = [1,2,3,1,5,1,8]

有没有一种方法可以找到列表中每个 1 的索引?

你说的“查找”是什么意思?你想要什么输出结果?你已经尝试过什么了? - alexvassel
2个回答

13
当然。一个列表推导式加上enumerate应该可以解决问题:
[i for i, z in enumerate(x) if z == 1]

并且证明:

>>> x = [1, 2, 3, 1, 5, 1, 8]
>>> [i for i, z in enumerate(x) if z == 1]
[0, 3, 5]

糟糕,我晚了5秒钟... :) - sloth
抱歉,我对Python非常新手,请问如何使用打印函数打印出[0, 3, 5]? - Keenan
谢谢,这样做可以了。使用x.index()能否实现这个功能? - Keenan
如果您不介意的话,能否向我展示如何使用 x.index 进行操作? - Keenan
1
@user1871081:重新阅读你的课堂笔记和/或查看list.index的文档(还有一个有用的提示:启动Python解释器并键入help(list.index))。 - tzot
显示剩余2条评论

2

提问者要求使用 list.index 来解决问题,这里是一个这样的解决方案:

def ones(x):
    matches = []
    pos = 0
    while True:
        try:
            pos = x.index(1, pos)
        except ValueError:
            break
        matches.append(pos)
        pos += 1
    return matches

它比mgilson的解决方案更冗长,我认为mgilson的解决方案更符合Python惯用法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接