Menu Close

Python List 索引

list是一个容器,用于按顺序存储不同数据类型(整数,浮点数,布尔值,字符串等)。它是Python内置的重要数据结构。数据写在方括号([])内,值之间用逗号(,)分隔。

使用从索引0开始的第一个元素为列表中的项目建立索引。您可以通过添加新项目或更新,删除现有项目来对创建的list进行更改。它还可以具有重复项和嵌套列表。

list有许多方法,这一节将介绍index()方法。

在本教程中,您将学习:

  • Python list index
  • 使用for循环获取list中元素的索引
  • 使用while循环和list.index()
  • 使用推导获取list中元素的索引
  • 使用枚举获取索引
  • 使用过滤器获取索引
  • 使用NumPy获取索引
  • 使用more_itertools.locate()获取索引

Python list index()

index方法可帮助您找到给定元素的第一个索引。如果list中有重复的元素,则返回该元素的第一个索引。这是获取索引的最简单直接的方法。

除了内置的list index方法外,您还可以使用其他方法来获取索引,例如使用推导,enumerate和filter方法遍历。

list index方法返回给定元素的第一个索引。

语法

list.index(element, start, end)

参数

参数 描述
element 您要获取索引的元素。
start 此参数是可选的。您可以定义start:索引以搜索元素。如果未给出,则默认值为0。
end 此参数是可选的。您可以为要搜索的元素指定结束索引。如果未给出,则默认到列表末尾。

返回值

index()方法返回给定元素的索引。如果列表中不存在该元素,则index方法将引发错误,例如ValueError:’Element’ is not in list

示例:查找给定元素的索引。

在 my_list = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’] 中,我们想知道元素C和F的索引。

下面的示例显示如何获取索引。

my_list = ['A', 'B', 'C', 'D', 'E', 'F']
print(my_list.index('C'))
print(my_list.index('F'))

Output:

2
5

示例:在index()中使用start和end

在此示例中,将尝试限制使用开始索引和结束索引在列表中搜索索引。

my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print(my_list.index('C', 1, 5))
print(my_list.index('F', 3, 7))
print(my_list.index('D', 1))

Output:

2
5
3

使用不存在的元素测试index方法。

当您尝试在搜索不存在的元素的索引时,将出现如下所示的错误:

ValueError: 'xxx' is not in list

使用for循环获取索引

通过list.index方法,我们已经看到它给出了作为参数传递的元素的索引。

使用for循环够获得多个索引,如下例所示。

my_list = ['张三', '李四', '王五', '赵六', '张三', '李四', '王五']
all_indexes = []
for i in range(0, len(my_list)) :
    if my_list == '张三' :
        all_indexes.append(i)
print(my_list)
print(all_indexes)

Output:

['张三', '李四', '王五', '赵六', '张三', '李四', '王五']
[0, 4]

使用while循环和list.index

使用while循环将遍历获取给定元素的所有索引。

在列表中:my_list = [‘Guru’,’Siya’,’Tiya’,’Guru’,’Daksh’,’Riya’,’Guru’],我们需要元素“ Guru”的所有索引。

下面给出的示例显示了如何使用while循环获取所有索引

my_list = ['Guru','Siya','Tiya','Guru','Daksh','Riya','Guru'] 
结果= []
elementindex = -1
而True:
    尝试:
        elementindex = my_list.index('Guru',elementindex + 1)
        result.append(elementindex)
    除了ValueError:
        休息
print(“ OriginalList是”,my_list)
print(“元素Guru的索引是”,结果)

输出:

OriginalList是['Guru','Siya','Tiya','Guru','Daksh','Riya','Guru']
元素Guru的索引是[0,3,6]

使用列表推导获取元素索引

要获取所有索引,一种快速而直接的方法是利用列表推导式

列表推导是Python函数,用于创建新序列(例如列表,字典等),即使用已创建的序列。

它们有助于减少较长的循环,并使您的代码更易于阅读和维护。

示例:

my_list = ['中国', '美国', '法国', '俄罗斯', '英国', '中国', '美国']
print(my_list)
all_indexes = [a for a in range(len(my_list)) if my_list[a] == '中国']
print(all_indexes)

Output:

['中国', '美国', '法国', '俄罗斯', '英国', '中国', '美国']
[0, 5]

使用枚举获取索引

Enumerate函数是python可用的内置函数。您可以使用枚举来获取列表中元素的所有索引。它以输入作为可迭代对象,而输出是带有每个项目计数器的对象。

下面的示例演示如何使用列表上的枚举来获取给定元素的所有索引。

my_list = ['中国', '美国', '法国', '俄罗斯', '英国', '中国', '美国']
print(my_list)
all_indexes = 
print(all_indexes)

Output:

['中国', '美国', '法国', '俄罗斯', '英国', '中国', '美国']
[0, 5]

使用过滤器获取列表中元素的索引

filter方法基于给定的函数过滤给定的列表。列表中的每个元素都将传递给函数,并且所需的元素将根据函数中给出的条件进行过滤。

让我们使用filter方法获取列表中给定元素的索引。

示例:

my_list = ['中国', '美国', '法国', '俄罗斯', '英国', '中国', '美国']
print(my_list)
all_indexes = list(filter(lambda i: my_list == '中国', range(len(my_list))))
print(all_indexes)

Output:

['中国', '美国', '法国', '俄罗斯', '英国', '中国', '美国']
[0, 5]

使用NumPy获取列表中元素的索引

NumPy库专门用于数组。因此,这里将使用NumPy从给定列表中获取所需元素的索引。

代码示例:

import numpy as np
my_list = ['中国', '美国', '法国', '俄罗斯', '英国', '中国', '美国']
np_array = np.array(my_list)
item_index = np.where(np_array == '中国')[0]
print(my_list)
print(item_index)

Output:

['中国', '美国', '法国', '俄罗斯', '英国', '中国', '美国']
[0, 5]

使用more_itertools.locate获取列表中元素的索引

more_itertools.locate有助于查找列表中元素的索引。此模块可与python 3.5+版本一起使用。必须首先安装more_itertools软件包才能使用它。

以下是安装和使用more_itertools的步骤

步骤1)使用pip(python软件包管理器)安装more_itertools。命令:

pip install more_itertools

步骤2)安装完成后,导入模块

from more_itertools import locate

现在,您可以在列表中使用定位模块,如下例所示:

from more_itertools import locate
my_list = ['中国', '美国', '法国', '俄罗斯', '英国', '中国', '美国']
print(my_list)
print(list(locate(my_list, lambda x: x == '中国')))

Output:

['中国', '美国', '法国', '俄罗斯', '英国', '中国', '美国']
[0, 5]

python系列教程目录

Posted in Python

发表评论

相关链接