Tricks(五)—— Python 返回所有符合条件的下标

来源:互联网 发布:家庭网限制80端口吗 编辑:程序博客网 时间:2024/06/11 01:40

返回所有符合条件的下标,自然想到的是用列表解析(list comprehension),并在列表解析中增加一个断言(if pred,是否符合条件),那么又该如何返回其下标呢,是使用 index() 成员函数吗?

比如,我们要获取列表中所有元素为 0 的下标:

>>> l = [0, 2, 0]>>> [l.index(l) for i in l if l == 0]

输出的结果为:

[0, 0]

因为 index() 成员得到 list 中出现的第一个值就结束,所以对于上式,它每次返回的都是下标0;

解决方案:我们不应对 list 进行迭代,而是对下标进行迭代,然后返回符合条件的下标:

>>> [i for i in range(len(l)) if l[i] == 0][0, 2]
0 0