通过修改原始列表就地重新排列列表,将偶数索引值放在前面
Rearrange list in-place by modifying the original list, put even-index values at front
我对 python 比较陌生,我仍在努力学习这门语言的基础知识。我偶然发现了一个问题,要求您通过修改原始列表来重新排列列表。您应该做的是将所有偶数索引值移到前面(以相反的顺序),然后是奇数索引值。
示例:
l = [0, 1, 2, 3, 4, 5, 6]
l = [6, 4, 2, 0, 1, 3, 5]
我最初的方法是只使用以下内容:
l = l[::-2] + l[1::2]
然而,显然这被认为是 'creating a new list' 而不是遍历原始列表来修改它。
因此,我希望得到一些关于我应该如何处理这个特定问题的想法或提示。我知道我可以使用 for 循环或 while 循环来循环遍历元素/索引,但我不知道如何进行交换或其他任何事情。
您可以通过分配给列表切片而不是变量来实现:
l[:] = l[::2][::-1] + l[1::2]
你对反转偶数元素的表达也是错误的。使用 l[::2]
获取所有偶数,然后使用 [::-1]
.
反转
这实际上等同于:
templ = l[::2][::-1] + l[1::2]
for i in range(len(l)):
l[i] = templ[i]
for
循环修改原始列表。
我对 python 比较陌生,我仍在努力学习这门语言的基础知识。我偶然发现了一个问题,要求您通过修改原始列表来重新排列列表。您应该做的是将所有偶数索引值移到前面(以相反的顺序),然后是奇数索引值。
示例:
l = [0, 1, 2, 3, 4, 5, 6]
l = [6, 4, 2, 0, 1, 3, 5]
我最初的方法是只使用以下内容:
l = l[::-2] + l[1::2]
然而,显然这被认为是 'creating a new list' 而不是遍历原始列表来修改它。
因此,我希望得到一些关于我应该如何处理这个特定问题的想法或提示。我知道我可以使用 for 循环或 while 循环来循环遍历元素/索引,但我不知道如何进行交换或其他任何事情。
您可以通过分配给列表切片而不是变量来实现:
l[:] = l[::2][::-1] + l[1::2]
你对反转偶数元素的表达也是错误的。使用 l[::2]
获取所有偶数,然后使用 [::-1]
.
这实际上等同于:
templ = l[::2][::-1] + l[1::2]
for i in range(len(l)):
l[i] = templ[i]
for
循环修改原始列表。