我编写了一个代码来反转列表中的元素。在这里,我应用了从0到字符串长度运行循环的算法,并在执行过程中交换值。我基本上是用第三个临时变量一次在两个变量之间切换
l = [1, 2, 3, 4, 5]
g = len(l) - 1
for i in range (0, len(l)):
m = l[i]
l[i] = l[g]
l[g] = m
g -= 1
print(l)
但是,我打印为原始列表。从逻辑上讲,我没有发现代码中有任何缺陷。据我所见,一切都已交换妥当。
逻辑的问题是您在整个列表上循环。由于在循环的每一次循环中交换2个元素,因此只需要遍历列表的一半即可交换所有值。
换句话说,当你迭代列表索引的前半部分时,你会将其反转。然后,当你遍历索引的后半部分时,你会将它反转。
顺便说一句,在python中交换值的一种非常酷的方法是:
a, b = b, a
或者在您的情况下:
l[i], l[g] = l[g], l[i]
#loop time should be len(1)/2
l = [1, 2, 3, 4, 5]
g = len(l) - 1
for i in range (0, len(l)/2):
m = l[i]
l[i] = l[g]
l[g] = m
g -= 1
print(l)