Python变量交换无法正常工作



我编写了一个代码来反转列表中的元素。在这里,我应用了从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)

最新更新