如何在Python列表中交换两个项目的位置?
我在网上找了很久都没找到一个好的解决办法(可能是因为“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]