python - 在Python列表中移动元素

标签 python

我有一个整数列表;它包含整数 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/

相关文章:

python - 如何增加使用 'timeout' 命令运行的进程的超时限制

python - 从 Python 打开 vi

python - 使用 python 和 mysql 返回控制台命令

python - 无法在 anaconda tenserenv 中运行 convolutional.py

python - 多输出线性回归模型的访问权重/系数

python - 如何降低日期的精度(秒)

python - 不执行一次程序就不能运行crontab

python - 如何构建 Flask 用户应用程序?

python - 将头文件 #ifndef 添加到当前目录下的 C 头文件中

python - 如果我想将模块作为字符串导入,如何使用 from import?