在Python列表中移动元素
我有一个整数列表;它包含整数27,但我们不知道它的索引 我们必须找到索引,然后将其与后面的项交换。如果索引27是最后一个元素(列表[-1]),那么我们将27与第一个元素交换在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
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是的。你的函数写得很好。我的疏忽。