我是Python世界的初学者,到目前为止我真的很喜欢这门语言!
在我的练习中,我发现了以下一个:“使用循环来显示给定列表中出现在奇数索引位置的元素”,我有两种解决方案。
但是,我不明白为什么下面的两段代码没有提示相同的结果。
第一个:
#THIS ONE IS WORKING
my_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
for index in range(len(my_list)):
#print(type(index), end=" ")
if index % 2 != 0:
print(my_list[index], end=" ")
第二个:
#THIS ONE IS **NOT** WORKING
my_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
for item in my_list:
#print(type(item), end=" ")
if item % 2 != 0:
print(item, end=" ")
正如你所看到的,我认为第二个片段的元素可能不是integer,这就是为什么我试图打印类型。
因此,结果应该是两个片段:
20 40 60 80 100
第二个我没有收到输出。
你能帮助我理解为什么吗?如果你有什么小事我没看到的话,我先向你道歉。连ChatGPT都帮不了我
4条答案
按热度按时间roejwanj1#
通过使用enumerate,您可以循环遍历索引和项,然后检查索引是否为奇数,以在奇数索引位置显示元素。
fnvucqvd2#
你应该使用 enumerate(),因为这会在每次迭代中同时给出索引和值。
使用它,你可以解包生成器并在一个步骤中打印(也没有不必要的尾随空间,因为其他一些答案会创建),如下所示:
输出:
注:
您可以通过使用切片来实现正确的输出,而无需测试任何给定索引的奇/偶,如下所示:
z3yyvxxp3#
在第二段代码中,你迭代的是元素,而不是元素的索引。你不能用这种方式计算元素的索引。也许你可以使用枚举,但第一个代码在你的情况下更有用
3phpmpom4#
欢迎使用Python!
对于您的问题,您正在循环两个不同的列表,如果您在每次迭代中打印该项,您将看到
索引输出:
0,1,2,3,...
项目输出:
10,20,30,40,50,...
要在第二个循环中修复此问题,请执行
编辑:感谢@buran & @slothrop指出错误