在python中对列表进行就地排序

在python中对列表进行就地排序,python,Python,在下面的函数中,我需要根据在函数中计算的列表“秩”对“项”进行排序。但我需要在适当的位置进行,而不是创建另一个对象。下面的代码进行排序,但创建一个新的引用。换句话说,前后的ID(项)是不同的 def collection_modifyitems(items): # calculate 'rank' print(id(items)) items = [x for (y, x) in sorted(zip(test_rank, items), key=lambda s: s[

在下面的函数中,我需要根据在函数中计算的列表“秩”对“项”进行排序。但我需要在适当的位置进行,而不是创建另一个对象。下面的代码进行排序,但创建一个新的引用。换句话说,前后的ID(项)是不同的

def collection_modifyitems(items):
    # calculate 'rank'
    print(id(items))
    items = [x for (y, x) in sorted(zip(test_rank, items), key=lambda s: s[0])]
    print(id(items))
如何在不创建新引用或不就地创建引用的情况下执行此操作?

使用
[:]
(切片整个列表)更改旧列表的值,而不是创建新引用:

items[:] = [x for (y, x) in sorted(zip(test_rank, items), key=lambda s: s[0])]
使用
[:]
(切片整个列表)更改旧列表的值,而不是创建新引用:

items[:] = [x for (y, x) in sorted(zip(test_rank, items), key=lambda s: s[0])]
items[:]=[x表示(y,x)已排序(zip(test\u rank,items),key=lambda s:s[0])
items[:]=[x表示(y,x)已排序(zip(test\u rank,items),key=lambda s:s[0])