我有一个整数列表;它包含整数 27,但我们不知道它的索引。
我们必须找到索引,然后将其与其后面的项目交换。如果索引 27 是最后一个元素 (list[-1]),那么我们将 27 与第一个元素交换。
my_list = [1, 2, 3, 4, 27] # original
my_list = [27, 2, 3, 4, 1] # result
当 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
除此之外你做什么取决于你。
关于python - 在Python列表中移动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33711104/