通过交换结束反转列表
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)
使用此代码:
l = ['a', 'b', 'c', 'd', 'e']
l=l[::-1]
print(l)
为什么要把这个简单的结构复杂化?或者,如果您不想那样做,请尝试使用:
l.reverse()
函数。 Python 有很多功能可以使用。
作业我怀疑...
但是 - 我们都需要从作业中休息一下。通过遍历整个列表,您将它反转两次。
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']
你有几个问题。您的第一个问题是您使用 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']
您甚至不需要定义 x
和 y
。相反,这样做:
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
是不可接受的,因为它与内置类型冲突。
我试图通过在此函数中发现三个错误来颠倒列表的顺序。此函数应该反转列表的第一个和最后一个元素,第二个和倒数第二个元素,依此类推。我相信我找到了两个,但我无法修复 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)
使用此代码:
l = ['a', 'b', 'c', 'd', 'e']
l=l[::-1]
print(l)
为什么要把这个简单的结构复杂化?或者,如果您不想那样做,请尝试使用:
l.reverse()
函数。 Python 有很多功能可以使用。
作业我怀疑...
但是 - 我们都需要从作业中休息一下。通过遍历整个列表,您将它反转两次。
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']
你有几个问题。您的第一个问题是您使用 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']
您甚至不需要定义 x
和 y
。相反,这样做:
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
是不可接受的,因为它与内置类型冲突。