移动Python列表中的元素

时间:2015-11-14 17:17:27

标签: python

我有一个整数列表;它包含整数27,但我们不知道它的索引。

我们必须找到索引,然后将其与后面的项目交换。如果索引27是最后一个元素(列表[-1]),那么我们将27与第一个元素交换。

my_list = [1, 2, 3, 4, 27] # original
my_list = [27, 2, 3, 4, 1] # result

我知道当它不是最后一个元素时如何交换27,但我不知道如何与第一个元素交换27,就像我展示的例子一样。

1 个答案:

答案 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

你所做的除外由你决定。