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中的数组索引的主要内容,如果未能解决你的问题,请参考以下文章