Python获取list中指定元素索引的两种方法

海哥  金牌会员 | 2024-7-24 18:25:01 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 889|帖子 889|积分 2667

在平时开辟过程中,常常遇到需要在数据中获取特定的元素的信息,如到达目的地最近的车站,橱窗里面最贵的物品等等。怎么办?看下面
方法一: 利用数组自身的特性 list.index(target), 其中a是你的目标list,target是你需要的下标对应的值

  1. li = [10,8,9,26,72,6,28]
  2. print(li.index(8))
复制代码
但是,如果a中有多个8呢?
我们发现,这种方法仅仅能获取都第一个匹配的value的下标(可以试试o_o)
所以,我们看看我们的第二种方案:
方法二: 利用enumerate函数。

  1. >>> li = [10,8,9,26,72,6,28]
  2. >>> print (enumerate(li))
  3. <enumerate object at 0x0000000002B9A990>
复制代码
原来enumerate的输出类型是enumerate object对象,所以,我们可以如下
  1. >>> li
  2. [10, 8, 9, 26, 72, 6, 28]
  3. >>> print(list(enumerate(li)))
  4. [(0, 10), (1, 8), (2, 9), (3, 26), (4, 72), (5, 6), (6, 28)]
  5. >>> print([i for i,j in enumerate(li) if j == 8])
  6. [1]
复制代码
再看,如果a中有多个‘8’呢?
  1. >>> li.append(8)
  2. >>> li.append(8)
  3. >>> li
  4. [10, 8, 9, 26, 72, 6, 28, 8, 8]
  5. >>> print(li.index(8))
  6. 1
  7. #学习中遇到问题没人解答?小编创建了一个Python学习交流群:531509025
  8. >>> print(list(enumerate(li)))
  9. [(0, 10), (1, 8), (2, 9), (3, 26), (4, 72), (5, 6), (6, 28), (7, 8), (8, 8)]
  10. >>> print([i for i,j in enumerate(li) if j == 8])
  11. [1, 7, 8]
复制代码
可见,list的index()方法是在list中找到第一个匹配的值。
而enumerate是将list(固然,也包含别的类型)中的元素元组化,然后我们利用循环方法获取相应的匹配的结果。所以方案二对于重复的数值能够一个不漏的get出来。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!  更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表