如何在python中进行变异?通过重新排序原始lis

2024-05-13 07:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

def swap_numbers(x, x_index): 
    for num in x:
        if x_index < len(x)-1:
            x[:] = x[:x_index] + [x[x_index+1]] + [x[x_index]]+ x[x_index+2:]
        elif x_index == len(x)-1:
            x[:] = [x[-1]] + x[1:-1] + [x[0]]

所以如果我想改变一个列表,让x=[1,2,3,4,5]和x_index=2 这个函数的作用是用下面的数字交换我们输入的索引的编号。在

应该是这样的

^{pr2}$

但我的是

>>> x = [1,2,3,4,5]
>>> swap_numbers(x,2)
>>> x
[1,2,3,4,5]

不过,如果我把函数的第一部分

x[:] = [x[:x_index] + [x[x_index+1]] + [x[x_index]] + x[x_index+2:]]"

它就会变成

>>> x = [1,2,3,4,5]
>>> swap_numbers(x,2)
>>> x
[[1,2,4,3,5]]

我该怎么办?在


Tags: 函数in列表forindexlenifdef
2条回答

也许是这样的:

def swap (l, i):
    l [i], l [i + 1] = l [i + 1], l [i]

这就产生了:

^{pr2}$

这取决于您希望如何处理索引错误(交换不存在),但这是可行的:

x = [1,2,3,4,5]
def swap_numbers(li, ind):
    try:
        li[ind],li[ind+1]=li[ind+1],li[ind]
    except IndexError:
        pass       

swap_numbers(x,2)
print x   
# [1, 2, 4, 3, 5]

这不会做任何不能做的事情,比如swap_numbers(x,5)

相关问题 更多 >