【问题标题】:How to know the index number of all specific numbers in a list in python如何知道python列表中所有特定数字的索引号
【发布时间】:2019-03-28 04:17:38
【问题描述】:

看看下面的数字列表:

dlist = [23.0, 28.6, 32.9, 34.9, 34.2, 31.0, 25.9, 20.1, 15.0, 11.8, 11.1, 13.1, 17.4, 23.0, 28.6, 32.9, 34.9, 34.2, 31.0, 25.9, 20.1, 15.0, 11.8, 11.1, 13.1, 17.4]

现在我尝试查找列表中所有大于 25 的数字的索引号。然后我想列出这些索引号。

for i in dlist:
    if i >= 25:
        checklist.append(list_degrees.index(i))

现在的问题是它注册了一些索引号两次。例如:我们看到25以上的第一个数字:28.6。这个数字的索引号是 1。如果我们进一步看,我们再次看到 28.6,这应该是索引号 14。相反,它又得到了索引号 1。

在这里你看到我的“错误”输出:

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

有人能解答我的问题吗? 提前谢谢!

【问题讨论】:

  • list_degrees 未定义。
  • L.index(elem) 返回elemL第一次 出现的索引

标签: python list indexing append


【解决方案1】:

你可以像下面的例子那样做:

dlist = [23.0, 28.6, 32.9, 34.9, 34.2, 31.0, 25.9, 20.1, 15.0, 11.8, 11.1, 13.1, 17.4, 23.0, 28.6, 32.9, 34.9, 34.2, 31.0, 25.9, 20.1, 15.0, 11.8, 11.1, 13.1, 17.4]

checklist = []
for idx, val in enumerate(dlist):
    if val >= 25:
        checklist.append(idx);

print(checklist);

您的代码无法正常工作的原因是 index 返回该列表中第一次出现的索引,导致列表中后面的值显示错误的索引,因为它们得到具有相同值的项目的index 也出现在列表的前面。

【讨论】:

    【解决方案2】:
    indices_greater_than_5 = [idx for idx,value in enumerate(my_values) if value > 5]
    

    是一种使用简单列表理解的方法,它使用enumerate0..len(my_values)-1 计数

    【讨论】:

      【解决方案3】:

      使用index 返回列表中该项目第一次出现的索引 (https://docs.python.org/3/tutorial/datastructures.html)。这就是为什么您只获取较早出现的索引,以收集您想要使用的所有索引enumerate

      使用enumerate,只取值大于25的项的索引

      res = [i for i, v in enumerate(dlist) if v > 25]
      # [1, 2, 3, 4, 5, 6, 14, 15, 16, 17, 18, 19]
      

      【讨论】:

        【解决方案4】:

        作为替代方案,您可以使用 numpy 的 where 函数:

        import numpy as np
        
        np.where(np.asarray(dlist) > 25)[0]
        
        # array([ 1,  2,  3,  4,  5,  6, 14, 15, 16, 17, 18, 19])
        

        【讨论】:

          猜你喜欢
          • 2020-07-30
          • 1970-01-01
          • 2022-11-23
          • 2021-07-31
          • 2013-09-01
          • 2017-11-13
          • 2011-11-02
          • 1970-01-01
          • 2012-06-28
          相关资源
          最近更新 更多