例如,我有一个列表:[25,3,26,27,56]
.
我想编写一个将数字 27 与下一个值交换的函数。在上面的例子中,在 27 和 56 之间交换位置。
但实际上我不知道列表中的值到底是什么。
所以我的问题是,如何表达“下一个价值”?我尝试使用索引,但我不知道如何表达它。而且,我知道如何用另一个数字替换一个数字,但是如何交换列表中的两个数字(数字 27 是已知的,将 27 与下一个值交换,但我不知道下一个值是什么)?
例如,我有一个列表:[25,3,26,27,56]
.
我想编写一个将数字 27 与下一个值交换的函数。在上面的例子中,在 27 和 56 之间交换位置。
但实际上我不知道列表中的值到底是什么。
所以我的问题是,如何表达“下一个价值”?我尝试使用索引,但我不知道如何表达它。而且,我知道如何用另一个数字替换一个数字,但是如何交换列表中的两个数字(数字 27 是已知的,将 27 与下一个值交换,但我不知道下一个值是什么)?
您可以像这样在一行中交换值
myList = [25,3,26,27,56]
myList[3], myList[4] = myList[4], myList[3]
print myList
输出
[25, 3, 26, 56, 27]
如果右侧的值用逗号分隔,python 将它们视为一个元组,并将它们一一解包到左侧变量。在这种情况下,它选择 and 的值myList[4]
并将myList[3]
它们分别分配给myList[3]
and myList[4]
。
编辑:如果你想交换每一个连续的元素,你可以这样做
myList = [25,3,26,27,56]
for i in range(0, len(myList) - 1, 2):
myList[i], myList[i + 1] = myList[i + 1], myList[i]
print myList
输出
[3, 25, 27, 26, 56]
如果你特别想用下一个数字交换 27,你可以使用index
函数来获取索引27
并像这样交换
myList = [25,3,26,27,56]
idx = myList.index(27)
if idx == len(myList) - 1: # If 27 is the last element, swap with the previous
myList[idx], myList[idx - 1] = myList[idx - 1], myList[idx]
else:
myList[idx], myList[idx + 1] = myList[idx + 1], myList[idx]
print myList
如果您想操作列表的一部分,切片分配是一种很好的方法
>>> foo = [25, 3, 26, 27, 56]
>>> i = foo.index(27)
>>> foo[i: i+2] = foo[i+2: i-1: -1]
>>> foo
[25, 3, 26, 56, 27]
你也可以使用
>>> foo[i: i+2] = reversed(foo[i: i+2])
或者
>>> foo[i: i+2] = foo[i+1], foo[i]