编辑:我看到您已经编辑了您的问题,您在其中修复了第一个问题,即检查列表中的项目是否为奇数。但是,您仍在使用for num in myList 遍历列表,它在后台创建了一个Iterator,它在您的列表中移动。这意味着无论您对num 做什么,您都只是在修改num 而不是myList[index]。为了直接修改列表,您需要引用myList[index]。我强烈建议您考虑使用 enumerate,请参阅我的原始答案以了解如何将其应用于您的用例。
您的问题是您正在检查 myList 中的值是偶数还是奇数,而不是它的索引。
此外,在循环中修改 num 不会修改原始列表中的值(这很容易被注意到,因为在“修改”列表中奇数值没有相乘)。
使用range(len()) 成语循环遍历您的列表将产生以下代码:
myList = [1, 2, 3, 4, 5]
for idx in range(len(myList)):
if idx % 2 != 0:
myList[idx] *= 2
print(myList)
您可以使用enumerate 和list comprehension 进一步缩短循环/分配:
myList = [1, 2, 3, 4, 5]
myList = [num * 2 if idx % 2 != 0 else num for idx, num in enumerate(myList)]
print(myList)