zoukankan      html  css  js  c++  java
  • Python基础教程:两种获取list中指定元素的索引

    在平时开发过程中,经常遇到需要在数据中获取特定的元素的信息,如到达目的地最近的车站,橱窗里面最贵的物品等等。

    方法一:
    利用数组自身的特性 list.index(target), 其中a是你的目标list,target是你需要的下标对应的值

    li = [10,8,9,26,72,6,28]
    print(li.index(8))
    

    但是,如果a中有多个8呢?
    我们发现,这种方法仅仅能获取都第一个匹配的value的下标(可以试试o_o)

    所以,我们看看我们的第二种方案:

    方法二:
    利用enumerate函数。

    >>> li = [10,8,9,26,72,6,28]
    >>> print (enumerate(li))
    <enumerate object at 0x0000000002B9A990>
    

    原来enumerate的输出类型是enumerate object对象,所以,我们可以如下

    '''
    学习中遇到问题没人解答?小编创建了一个Python学习交流群:531509025
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    >>> li
    [10, 8, 9, 26, 72, 6, 28]
    >>> print(list(enumerate(li)))
    [(0, 10), (1, 8), (2, 9), (3, 26), (4, 72), (5, 6), (6, 28)]
    >>> print([i for i,j in enumerate(li) if j == 8])
    [1]
    

    再看,如果a中有多个‘8’呢?

    >>> li.append(8)
    >>> li.append(8)
    >>> li
    [10, 8, 9, 26, 72, 6, 28, 8, 8]
    >>> print(li.index(8))
    1
    >>> print(list(enumerate(li)))
    [(0, 10), (1, 8), (2, 9), (3, 26), (4, 72), (5, 6), (6, 28), (7, 8), (8, 8)]
    >>> print([i for i,j in enumerate(li) if j == 8])
    [1, 7, 8]
    

    可见,list的index()方法是在list中找到第一个匹配的值。

    而enumerate是将list(当然,也包含其它类型)中的元素元组化,然后我们利用循环方法获取相应的匹配的结果。所以方案二对于重复的数值能够一个不漏的get出来。

  • 相关阅读:
    JZOJ 4043. 【雅礼集训2015Kzf】洪水
    JZOJ 5451.Genocide
    P4719 【模板】"动态 DP"&动态树分治
    [NOIP2018 提高组] 保卫王国
    【NOIP2017提高组正式赛】列队
    vuex的总结
    height:100vh
    从URL输入到页面展现到底发生什么
    JS的空数组是true还是false(内附JS类型转换表)
    Vue拼图验证组件使用教程
  • 原文地址:https://www.cnblogs.com/djdjdj123/p/15387244.html
Copyright © 2011-2022 走看看