Nau*_*hid 4 python list in-place slice indices
我对python相对较新,我仍然在努力学习该语言的基础知识.我偶然发现了一个问题,要求您通过修改原件来重新排列列表.你应该做的是将所有偶数索引值移到前面(以相反的顺序),然后是奇数索引值.
例:
l = [0, 1, 2, 3, 4, 5, 6]
l = [6, 4, 2, 0, 1, 3, 5]
Run Code Online (Sandbox Code Playgroud)
我最初的方法是使用以下内容:
l = l[::-2] + l[1::2]
Run Code Online (Sandbox Code Playgroud)
但是,显然这被认为是"创建一个新列表"而不是循环遍历原始列表来修改它.
因此,我希望得到一些关于如何处理这个特定问题的想法或提示.我知道我可以使用for循环或while循环遍历元素/索引,但我不知道如何进行交换或其他任何事情.
您可以通过分配列表切片而不是变量来执行此操作:
l[:] = l[::2][::-1] + l[1::2]
Run Code Online (Sandbox Code Playgroud)
你对反转偶数元素的表达也是错误的.使用l[::2]让所有的偶数,则反向与[::-1].
这实际上相当于:
templ = l[::2][::-1] + l[1::2]
for i in range(len(l)):
l[i] = templ[i]
Run Code Online (Sandbox Code Playgroud)
该for循环就地修改原始列表.