为什么只有当我使用不同的值时索引才会改变?

2024-10-03 06:32:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始用Python编程,如果希望列表中的值相同,我不知道如何更改索引。我想要的是索引改变,所以它会打印0,1,2,但我得到的只是0,0,0。我试图改变列表的值,使它们不同,然后我得到了我想要的输出。但我不明白为什么我使用什么样的值很重要,为什么索引会关心列表中的内容

a = 0
b = 0
c = 0
d = 0
e = 0
f = 0
justTesting = [[a, b], [c, d], [e, f]]
for item in justTesting:
    something = justTesting.index(item)
    print (something)

我使用的是python3.6.1,如果这是个问题的话


Tags: in内容列表forindex编程itemsomething
3条回答

因为每个列表(循环中指定的“item”)都是[0,0],这意味着行:

something = justTesting.index(item)

将在迭代期间为每个“项”查找列表中列表[0,0]的第一个实例。由于列表中的每个项目都是[0,0],因此第一个实例位于位置0

我准备了另一个例子来说明这一点

a = 1
b = 2
c = 3
d = 4
e = 5
f = 6
justTesting = [[a, b], [c, d], [e, f]]
for item in justTesting:
    print(item)
    something = justTesting.index(item)
    print(something)

结果如下:

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

阅读documentationindex的默认值是标识第一个出现。您还需要使用start参数,并在运行时进行更新:只搜索最新查找之后的列表

something = justTesting.index(item, something+1)

因为你的列表只包含[0, 0]

所以基本上,如果我们用它们的值替换所有变量,我们得到:

justTesting = [[0, 0], [0, 0], [0, 0]]

并且使用.index(item)将返回第一个出现的item(如果有的话)。因为item总是总是[0, 0],而且它第一次出现在justTesting[0],所以你总是得到0!请尝试更改每个列表中的值,然后重试。例如,这是有效的:

b = [1, 2, 3, 4, 5, 6, 7, 8, 9]

for item in b:
    print(b.index(item))

返回:

0, 1, 2, 3, 4, 5, 6, 7, 8

如果结果在一条线上

Try it here!

相关问题 更多 >