5

初学者在这里,学习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

列表有类似的东西吗?

4

5 回答 5

14

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

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

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

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

如果您要问是否有任何方法可以index递归到子列表中,答案是否定的,因为它必须返回您可以传递的内容[],并且[]永远不会进入子列表。

于 2013-03-31T05:25:34.627 回答
5

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]

快乐学习...:)

于 2019-11-08T14:25:27.177 回答
3

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

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

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

于 2013-03-31T05:28:30.443 回答
3

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

[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
于 2013-03-31T05:25:13.200 回答
1

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

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

输出

0 first
1 second
2 third
于 2013-03-31T06:36:08.330 回答