如何在Python列表中交换两个项目的位置?

261 投票
8 回答
419378 浏览
提问于 2025-04-15 20:42

我在网上找了很久都没找到一个好的解决办法(可能是因为“switch”、“position”、“list”和“Python”这些词都太常用了,大家理解的都不太一样)。

其实问题很简单——我有这么一个列表:

['title', 'email', 'password2', 'password1', 'first_name', 'last_name', 'next', 'newsletter']

我想把 'password2''password1' 的位置互换——我不知道它们具体在列表中的位置,只知道它们是紧挨着的,并且 'password2' 在前面。

我用了一些比较繁琐的方法来实现这个互换,但我在想有没有更简单、更优雅的办法呢?

8 个回答

18

根据你的需求,我会使用切片赋值的方法:

>>> L = ['title', 'email', 'password2', 'password1', 'first_name', 'last_name', 'next', 'newsletter']
>>> i = L.index('password2')
>>> L[i:i+2] = L[i+1:i-1:-1]
>>> L
['title', 'email', 'password1', 'password2', 'first_name', 'last_name', 'next', 'newsletter']

切片赋值右边的部分是一个“反向切片”,也可以这样写:

L[i:i+2] = reversed(L[i:i+2])

如果你觉得这样更容易理解,很多人也是这么做的。

218

简单的Python交换代码长这样:

foo[i], foo[j] = foo[j], foo[i]

现在你只需要弄清楚 i 是什么,这个可以很简单地通过 index 来实现:

i = foo.index("password2")
486

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。

有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据没有被正确地获取到。这就像是你想要的水桶里没有水,或者水的颜色不对。

为了避免这些问题,我们可以使用一些工具和方法来确保数据的正确性。就像在倒水之前,我们会检查水桶是否干净,水是否清澈一样。

总之,处理数据时要小心,确保每一步都做对,这样才能得到我们想要的结果。

i = ['title', 'email', 'password2', 'password1', 'first_name', 
     'last_name', 'next', 'newsletter']
a, b = i.index('password2'), i.index('password1')
i[b], i[a] = i[a], i[b]

撰写回答