在Python列表中移动元素

在Python列表中移动元素,python,Python,我有一个整数列表;它包含整数27,但我们不知道它的索引 我们必须找到索引,然后将其与后面的项交换。如果索引27是最后一个元素(列表[-1]),那么我们将27与第一个元素交换 my_list = [1, 2, 3, 4, 27] # original my_list = [27, 2, 3, 4, 1] # result 当27不是最后一个元素时,我知道如何交换27,但我不知道如何与第一个元素交换27,如我展示的示例所示。一旦您要查找的数字始终存在于列表中,只需使用模进行索引和交换: my_li

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

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

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

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

一旦您要查找的数字始终存在于列表中,只需使用模进行索引和交换:

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

你在比赛中做什么取决于你。

你能把这句话打断吗?这可能会让你的问题更清楚。我认为问题是交换列表中的元素。在函数中引入参数
n
有什么原因吗?@ssundarraj,OP说他们不知道元素在哪里,所以n将是他们想要移动的任何元素。对不起,我不知道模,所以你能告诉我[45]中是什么吗?ssundarraj,OP示例中使用的数字是27,这并不意味着27将是唯一使用过的数字,即使它添加了一个更通用的函数,也可能比编写一个只能与数字一起使用的函数更有意义27@PadraicCunningham是的。你的函数写得很好。我的疏忽。