为什么在重复时,FOR IN代码在数组的最后一个循环(Python)?

时间:2019-01-22 10:00:10

标签: python python-3.x

这是我在下面编写的代码示例:

animals = ['rat', 'fish', 'fool', 'cat', 'lion']
for animals in animals:
    print('i am a ' + animals)

print('\n \n')

for animals in animals:
    print('i am a ' + animals)

print('\n \n')

for animals in animals:
    print('i am a ' + animals)

print('\n \n')

for animals in animals:
    print('i am a ' + animals)

问题是:第一个“打印”命令可以正确打印,但是下一个“ for,in,print”命令可以循环遍历数组中“狮子”的每个字母,随后的打印命令仅对最后一个重复“ n” “狮子”中的字母...

我编写的代码有问题吗?有人知道发生了什么吗?任何帮助或指导将不胜感激。

谢谢

6 个答案:

答案 0 :(得分:1)

这是因为您的迭代变量与列表的名称相同。

在您的第一个for循环结束时,“动物”变成“狮子”。

因此,第二个循环经过“狮子”。同样,在第二个循环结束时,变量变为“ n”。

答案 1 :(得分:0)

每次进入for循环时,您都在重新分配变量“ animals”。因此,在第一个循环结束时,动物不再是您的列表,而是字符串“狮子”。在第二个循环的末尾,动物被分配给字符串“ n”,并在最后一个循环中保持这种状态。如果您按如下所示对代码进行修改,那将始终是相同的:

animals = ['rat', 'fish', 'fool', 'cat', 'lion']
for animal in animals:
    print('i am a ' + animal)

print('\n \n')

for animal in animals:
    print('i am a ' + animal)

print('\n \n')

for animal in animals:
    print('i am a ' + animal)

print('\n \n')

for animal in animals:
    print('i am a ' + animal)

答案 2 :(得分:0)

这是因为您的迭代器具有与列表相同的名称,因此您应该将其重命名为animal

animals = ['rat', 'fish', 'fool', 'cat', 'lion']
for animal in animals:
    print('i am a ' + animal)

print('\n \n')

for animal in animals:
    print('i am a ' + animal)

print('\n \n')

for animal in animals:
    print('i am a ' + animal)

print('\n \n')

for animal in animals:
    print('i am a ' + animal)

答案 3 :(得分:0)

这是因为您在所有for循环中都使用for animals in animals:,这意味着lion将在第一个for循环结束时存储在animals中,并被馈送到第二个一个等等。 您必须使用for animal in animals:

答案 4 :(得分:0)

您在列表和索引变量中使用了相同的变量名,最后一个变量分配给了animals,下一个循环在lion上以animals的值运行,并且不是您想要的列表。您应该这样做

for animal in animals:

  

我编写的代码有问题吗?

实际上有很多事情。 我相信您想在换行上打印每个动物的名称,从而尝试for循环。现在循环的重点是减少代码冗余。但是,您已经为循环编写了四遍,这违反了循环的目的。

答案 5 :(得分:0)

此:

for animals in animals:
    print(animals)

实际上等效于:

 for i in range(len(animals)):
     animals = animals[i]
     print(animals)

如您所见,它重新绑定了名称animals,因此在循环animals之后指向原始列表的最后一项(在您的情况下为字符串"lion")。由于字符串是可迭代的,因此第二个for循环迭代animals中的各个字母(现在指向字符串"lion"),因此在第二个循环之后,animals现在指向最后一个"lion"中的字母,即"n"。现在,随后的循环都遍历(一个字母)字符串"n"