2013-03-31 77 views
1

学习python的初学者想知道些什么。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 

有没有像这样的列表?

+1

作为@BurhanKhalid说:不要使用列表作为变量名,因为它也内置名函数'list' * – jamylak

+1

你确定在第一个例子中返回了'2'吗?它应该是'1'。 – omz

+1

你得到如此广泛的答案的原因是,没有人真的可以确切地确定你在哪种情况下会发生什么,以及为什么*。更何况,你的例子并不符合现实;像@omz指出的那样,第一个应该给出'1'而不是'2'。 –

回答

2

在你的第二个例子,你的列表将会是这样的:

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

因此有在列表中没有元素4

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

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

更一般地,.index方法对身份进行操作。所以,下面的工作,因为你问蟒蛇已插入特定列表对象变为列表:

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

index方法不执行你所期望的。一个索引得到一个项目,你必须使用[]语法:

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

index被用来从一个项目的索引:

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

如果你问是否有什么办法得到index递归到子列表中,答案是否定的,因为它将不得不返回可以传入[],并且[]永远不会进入子列表的东西。

3

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

首先,不要使用list作为变量名称,因为它也是内置函数的名称list。其次,list.index[4]不同于list.index(4);两者都会在你的情况下出错,但它们是两种不同的操作。

0

如果你想拉一个特定元素的索引,那么索引函数将有所帮助。然而,enumerate会做类似字典例子,

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

输出

0 first 
1 second 
2 third