【问题标题】:python - get item number from listpython - 从列表中获取项目编号
【发布时间】:2012-08-09 01:47:49
【问题描述】:

我刚刚问了以下问题:

Python - find integer closest to 0 in list

最好的答案是使用:min(lst, key=abs)

该代码返回列表中的项目。

如何从列表中获取项目 number? (即2 而不是-18

【问题讨论】:

    标签: python list numbers int


    【解决方案1】:

    您需要使用索引来扩充您的列表:

    min(enumerate(lst), key=lambda x: abs(x[1]))
    

    它将返回索引最接近零的值,如果您只需要索引,请使用[0]

    关于你的例子:

    >>> example = [237, 72, -18, 237, 236, 237, 60, -158, -273, -78, 492, 243]
    >>> min(enumerate(example), key=lambda x: abs(x[1]))
    (2, -18)
    >>> min(enumerate(example), key=lambda x: abs(x[1]))[0]
    2
    

    这是非常有效的(最坏情况 O(n));您也可以使用example.index(min(example, key=abs)),但在最坏的情况下(O(2n))必须遍历列表两次。

    【讨论】:

      【解决方案2】:
      >>> lst = [237, 72, -18, 237, 236, 237, 60, -158, -273, -78, 492, 243]
      >>> lst.index(min(lst, key=abs))
      2
      

      【讨论】:

      • 请注意,这必须通过列表两次。
      【解决方案3】:

      试试:

      lst.index(min(lst, key=abs))

      【讨论】:

        【解决方案4】:

        一种方法是在找到要查找的整数后,可以使用“索引”...

        result = min(lst, key=abs)
        index = lst.index(result)
        print(index) # prints 2
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多