我有一个整数列表;它包含整数27,但我们不知道它的索引。
我们必须找到索引,然后将其与后面的项目交换。如果索引27是最后一个元素(列表[-1]),那么我们将27与第一个元素交换。
my_list = [1, 2, 3, 4, 27] # original
my_list = [27, 2, 3, 4, 1] # result
我知道当它不是最后一个元素时如何交换27,但我不知道如何与第一个元素交换27,就像我展示的例子一样。
答案 0 :(得分:3)
一旦您要查找的号码始终存在于列表中,只需索引并使用modulo交换:
my_list = [1, 2, 3, 4, 27]
def swap(l,n):
ln = len(l)
ind = my_list.index(n)
l[ind], l[(ind + 1)% ln] = l[(ind + 1) % ln], l[ind]
使用% ln
只是意味着我们四处走动,因此根据您的示例ind = 5
(4 + 1) % 5
将为0
输出:
In [45]: my_list = [1, 2, 3, 4, 27]
In [46]: swap(my_list, 27)
In [47]: my_list
Out[47]: [27, 2, 3, 4, 1]
In [48]: swap(my_list, 4)
In [49]: my_list
Out[49]: [27, 2, 3, 1, 4]
您可能想要处理n不存在的情况:
def swap(l,n):
ln = len(l)
try:
ind = my_list.index(n)
l[ind], l[(ind + 1)% ln] = l[(ind + 1) % ln], l[ind]
except IndexError:
pass
你所做的除外由你决定。