Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不使用reverse()和return的情况下反转列表_Python_Python 3.x_List - Fatal编程技术网

Python 如何在不使用reverse()和return的情况下反转列表

Python 如何在不使用reverse()和return的情况下反转列表,python,python-3.x,list,Python,Python 3.x,List,我需要一个代码,不使用reverse()的两个返回来反转列表。因此它只能修改输入的列表。以下是我迄今为止尝试过但尚未奏效的方法: def reversed(x): x[::-1] 及 第二个代码给了我一个错误“name”x“未定义”您可以将x指定给它的反向值: x = x[::-1] 这与第一个示例相同,尽管它重新分配了变量 def reverse_list(x): return x[::-1] x =[1,2,3,4,5] y = reverse_list(x) p

我需要一个代码,不使用reverse()的两个返回来反转列表。因此它只能修改输入的列表。以下是我迄今为止尝试过但尚未奏效的方法:

def reversed(x):
    x[::-1]


第二个代码给了我一个错误“name”x“未定义”

您可以将x指定给它的反向值:

x = x[::-1]
这与第一个示例相同,尽管它重新分配了变量

def reverse_list(x):
    return x[::-1]

x =[1,2,3,4,5]
 
y = reverse_list(x)

print(y)
输出:[5,4,3,2,1]

首先,不要这样做。变异的数据结构会让你的同事讨厌你。但如果必须这样做,请考虑:

def mutate(lst):
    backward = lst[::-1]
    lst.clear()
    lst.extend(backward)

a = [1,2,3,4]
print(a)
print(id(a))

mutate(a)
print(a)
print(id(a))
mutate
函数对其输入进行反向复制。然后清除传入的列表的内容,使其为空。最后,它用反向副本填充空列表。通过这种方式,原始对象在适当的位置发生变化并保留其原始ID

或者,如果您的资源非常有限,并且为了不必临时复制输入列表,您愿意让代码变慢,那么您可以交换第一个和最后一个项目,然后将第二个和第二个项目交换为lsat项目,依此类推,直到您到达列表的中间:

def mutate_by_swapping(lst):
    last_index = len(lst) - 1
    for i in range(len(lst) // 2):
        lst[i], lst[last_index - i] = lst[last_index - i], lst[i]

注意第二个函数的缩进需要代码吗?你是说函数吗?还是一份声明?你的意思是不能使用内置的
reversed
函数或
return
语句吗?你想要像[x[-(i+1)]这样的列表表达式来表示范围内的i(len(x))]你可能想要在
reverse(x)
函数中运行
for
循环。因此,您需要适当缩进
for
循环。这是作业吗?似乎只有极少数几个地方需要设置这样的约束条件,您必须使用切片分配(
x[:]=x[::-1]
),否则,您只需重新绑定本地名称
x
,而不会影响它最初引用的列表。尽管在这两种情况下,
x
不会在两种方法@chepner之后分配给相同的值吗?这不是预期的结果吗?我可能错了事实上我明白你的意思虽然OP不太清楚他们到底想要什么。我假设
x
将是手头上唯一的变量。哦,我假设您提供了OP的
反向
函数的主体。如果它是相同的范围,是的,这很好。不,这只是一个内联语句
def mutate_by_swapping(lst):
    last_index = len(lst) - 1
    for i in range(len(lst) // 2):
        lst[i], lst[last_index - i] = lst[last_index - i], lst[i]