Python中的数组索引

Posted

技术标签:

【中文标题】Python中的数组索引【英文标题】:Array Indexing in Python 【发布时间】:2013-03-21 12:49:20 【问题描述】:

这里是初学者,学习python,有点疑惑。

这给了我第二个元素:

list = [1,2,3,4]
list.index(2)
2

但是当我尝试这个时:

list = [0] * 5
list[2] = [1,2,3,4]
list.index[4]

我得到一个错误。有没有办法从数组中提取元素的索引,无论它放在哪个列表中?我知道字典是可能的:

info = first:1,second:2,third:3
for i in info.values:
print i
1
2
3

列表有类似的东西吗?

【问题讨论】:

正如@BurhanKhalid所说:不要使用list作为变量名,因为它也是内置函数的名称list 您确定在您的第一个示例中返回了2 吗?应该是1 您得到如此广泛答案的原因是没有人能真正确定您在每种情况下期望会发生什么,并且为什么。更不用说,您的示例实际上与现实不符;正如@omz 指出的那样,第一个应该回馈1,而不是2 【参考方案1】:

list 是一个内置函数,不要将它用作变量名,它是违反协议的,而是使用 lst。

要访问列表中的元素,请使用带有该元素索引号的 [ ]

lst = [1,2,3,4]
lst[0]
1

另一个例子

lst = [1,2,3,4]
lst[3]
4

使用 (:) 分号访问系列中的元素,分号之前的第一个索引号包含在分号之后并排除在分号之后

lst[0:3]
[1, 2, 3]

如果没有指定分号之前的索引号,则所有数字都包含在列表的开头,直到分号之后的索引号

lst[:2]
[1, 2]

如果没有指定分号后的索引号,则所有数字都包含在列表末尾,相对于分号前的索引号

lst[1:]
[2, 3, 4]

如果我们再给一个分号,则指定字段编号将被视为步骤

lst[0:4:2]
[1, 3]

这用于查找元素的具体索引号

lst.index(3)
2

这是我最喜欢的pop函数之一

lst.pop(1)
2

现在查看删除元素的主列表..:)

lst
[1, 3, 4]

为了从给定列表中提取偶数使用这个,这里我举一个新的例子来更好地理解

lst = [1,1,2,3,4,44,45,56]

import numpy as np

lst = np.array(lst)
lst = lst[lst%2==0]
list(lst)
[2, 4, 44, 56]

要从给定列表中提取奇数,请使用这个(注意我有 1 而不是 0)

lst = [1,1,2,3,4,44,45,56]

import numpy as np

lst = np.array(lst)
lst = lst[lst%2==1]
list(lst)
[1, 1, 3, 45]

快乐学习...:)

【讨论】:

很好的彻底和简单的解释。感谢您并感谢 Google 首先找到此内容。【参考方案2】:

如果你想提取特定元素的索引,那么 index 函数会有所帮助。但是,enumerate 的作用类似于字典示例,

>>> l=['first','second','third']
>>> for index,element in enumerate(l):
...     print index,element
... 

输出

0 first
1 second
2 third

【讨论】:

【参考方案3】:

您的问题的答案是否定的,但您的代码还有一些其他问题。

首先,不要使用list作为变量名,因为它也是内置函数list的名称。

其次,list.index[4] 不同于list.index(4);两者都会在您的情况下出现错误,但它们是两种不同的操作。

【讨论】:

【参考方案4】:

index 方法不符合您的预期。要在索引处获取项目,您必须使用 [] 语法:

>>> my_list = ['foo', 'bar', 'baz']
>>> my_list[1]  # indices are zero-based
'bar'

index 用于从项目中获取索引:

>>> my_list.index('baz')
2

如果您询问是否有任何方法可以让 index 递归到子列表中,答案是否定的,因为它必须返回一些您可以传递给 [][] 的内容从不进入子列表。

【讨论】:

【参考方案5】:

在您的第二个示例中,您的列表将如下所示:

[0, 0, [1, 2, 3, 4], 0, 0]

因此列表中没有元素4

这是因为当您设置list[2] 时,您正在更改第三个元素,而不是更新列表中的其他元素。

如果要替换列表中的一系列值,请使用切片表示法,例如 list[2:](表示“从第三个到最后一个的每个元素”)。

更一般地说,.index 方法对身份进行操作。因此,以下内容将起作用,因为您正在询问 python 您插入的特定列表对象在列表中的位置:

lst = [0]*5
lst2 = [1,2,3,4]
lst[2] = lst2
lst.index(lst2) # 2

【讨论】:

以上是关于Python中的数组索引的主要内容,如果未能解决你的问题,请参考以下文章

通过python中的索引和数组对数据框进行切片

多维数组索引 C++ 中的多维数组

Python列表/数组:禁用切片中的负索引环绕

如何拆分用户输入以使其占用数组中的两个索引位置? (Python)

在Python中的二进制搜索算法中查找数组的中间索引值

Python中的列表