繁体   English   中英

通过交换末端反转列表

[英]Reverse a List by Swap Ends

我试图通过在此函数中找到三个错误来反转列表的顺序。 该函数应该反转列表的第一个和最后一个元素,第二个和倒数第二个元素,依此类推。 我相信我找到了两个,但是在修复list[j] = y的行时遇到了麻烦。

def reverse(list):
    """Reverses elements of a list."""
    for i in range(len(list)):
        j = len(list) - i
        x = list[i]
        y = list[j-1]
        list[i] = x
        list[j] = y 

l = ['a', 'b', 'c', 'd', 'e']
reverse(l)
print(l)

我怀疑功课...

但是-我们都需要休息一下功课。 通过遍历整个列表,您可以将其反转两次。

def reverse(list):
    """Reverses elements of a list."""
    for i in range(len(list)/2):
        j = i + 1
        x = list[i]
        y = list[-j]
        list[-j] = x
        list[i] = y

l = ['a', 'b', 'c', 'd', 'e']
l=reverse(l)
print(l)

导致

['e', 'd', 'c', 'b', 'a']

使用此代码:

l = ['a', 'b', 'c', 'd', 'e']
l=l[::-1]
print(l)

为什么要使这种简单的结构复杂化? 或者,如果您不想那样做,请尝试使用:

l.reverse()  

功能。 Python有许多可供使用的功能。

你有几个问题。 您的第一个问题是您使用list[j] = y而不是list[j-1] = x 您使用j-1正确定义了y ,但是您应该将list[j-1]更改为另一个x 另一个问题是,您将从列表的开头一直到结尾。 一旦到达列表的一半以上,您将撤消工作。 您也不需要使用len(list)-i因为您可以只使用-i 这是更新的代码:

def reverse(seq):
    """Reverses elements of a list."""
    for i in range(len(seq)//2):
        x = seq[i]
        y = seq[-i-1]
        seq[i] = y
        seq[-i-1] = x

l = ['a', 'b', 'c', 'd', 'e']
reverse(l)
print(l)

输出:

['e', 'd', 'c', 'b', 'a']

您甚至不需要定义xy 相反,请执行以下操作:

def reverse(seq):
    """Reverses elements of a list."""
    for i in range(len(list)//2):
        seq[i], seq[-i-1] = seq[-i-1], seq[i]

我也改变了你的名字。 名称可能比seq更好,但是list不能接受,因为它与内置类型冲突。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM