Python获取list中指定元素的索引

摘要:
我们经常遇到获取数据中特定元素信息的需求。我们使用阵列自己的功能列表。index(target),其中a是目标列表,target是对应于所需下标的值1li=[10,28]2print(li.index(8))。但如果一个中有多个8呢?该方法只能获得第一个匹配值(try o_o)的下标。因此,以示例1>li=[10,28]2>

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

方法一: 利用数组自身的特性 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 >>> print(list(enumerate(li)))
 8 [(0, 10), (1, 8), (2, 9), (3, 26), (4, 72), (5, 6), (6, 28), (7, 8), (8, 8)]
 9 >>> print([i for i,j in enumerate(li) if j == 8])
10 [1, 7, 8]

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

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

免责声明:文章转载自《Python获取list中指定元素的索引》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇一个简单 JDK 动态代理的实例python3中argparse模块详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HTML5--》点击显示隐藏内容

<details>浏览器支持比较差,可以用JavaScript实现这种功能。 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>js点击显示隐藏内容</title> 6 &...

C++指针&amp;amp;引用简笔

1.困惑的二级指针 #include <iostream> using namespace std; void pt(int* *t) { cout<<t<<endl<<*t<<endl<<**t<<endl; } int main() { int a = 1;...

List.Select按字符串选择属性

不知道大家有没有遇到这样的情况:List使用Lambda表达式的时候,想要选择项的某个属性列。 例如,选择编号ID: 1 var idList=list.Select(o=>o.ID).ToList(); 又,想要选择名称: 1 var nameList=list.Select(o=>o.Name).ToList(); 可否将其抽象呢?下面是我...

pom文件

1.父子pom 如果在一个工程中分多个模块,那么会有父子pom。一般子pom中会有配置,指示其依赖的父pom: <parent>    <groupId>com.xxx</groupId>    <artifactId>xxx</artifactId>    <version>1.1....

spark保存读取csv SequenceFile

前言 Spark读取和保存文件格式是非常多的,json,csv,haoop SequenceFile ,hbase等等。本文就是简单的spark读取文件 spark 读写csv 使用opencsv jar包读取,先在maven配置。 读取方式因逐行读取、以单个文件为key读取整个文件,代码实现略有不同 逐行读取 package com.learn.hado...

用jq中jSignature做手动签名

<!DOCTYPE html><html lang="zh-CN"><head> <title>手写板签名demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <...