python - 通过修改原始列表就地重新排列列表,将偶数索引值放在前面

标签 python list slice indices in-place

我是 python 的新手,我仍在努力学习这门语言的基础知识。我偶然发现了一个问题,要求您通过修改原始列表来重新排列列表。您应该做的是将所有偶数索引值移到前面(以相反的顺序),然​​后是奇数索引值。

例子:

l = [0, 1, 2, 3, 4, 5, 6]
l = [6, 4, 2, 0, 1, 3, 5]

我最初的方法是只使用以下内容:

l = l[::-2] + l[1::2]

但是,显然这被认为是“创建一个新列表”,而不是遍历原始列表来修改它。

因此,我希望得到一些关于我应该如何处理这个特定问题的想法或提示。我知道我可以使用 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 - 通过修改原始列表就地重新排列列表,将偶数索引值放在前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50224226/

相关文章:

python - 切片 Pandas 数据帧非单调索引

python - 如何使用行号列表将列添加到数据框中?

python - Facebook 广告预算估算(reach estimate cpm)

Python 将字符串字面量转换为 float

python - 元组列表中的双重迭代

javascript - 使用 Javascript/KendoUI 自动完成呈现数据时出错 - 对象 #<Object> 没有方法 'slice' - 如何解决?

python - 尝试在 tensorflow 的 map_fn 中使用 if

Python。使用单词列表中的任何单词拆分字符串

c# - 列表输出 namespace 的名称,而不是其值

arrays - 为什么 slice 变量在一遍又一遍地分配时不会被覆盖?