代码之家  ›  专栏  ›  技术社区  ›  sizzzzlerz

排序Python整数列表中的子列表

  •  10
  • sizzzzlerz  · 技术社区  · 14 年前

    我在Python列表中有一个未排序的整数列表。我想对完整列表的子集中的元素进行排序,而不是对完整列表本身进行排序。我还想对列表进行适当的排序,以免创建新列表(我经常这样做)。我最初试过

    p[i:j].sort()
    

    但这并没有改变p的内容,可能是因为一个新的列表被形成、排序,然后在不影响原始列表内容的情况下被丢弃。当然,我可以创建自己的排序函数,并使用循环来选择适当的元素,但这感觉不到python。有没有更好的方法来对子列表进行排序?

    3 回复  |  直到 14 年前
        1
  •  17
  •   Jochen Ritzel    14 年前

    你可以写 p[i:j] = sorted(p[i:j])

        2
  •  -1
  •   S.Lott    14 年前

    “到位”并不意味着什么。你想要这个。

    p[i:j] = list( sorted( p[i:j] ) ) 
    
        3
  •  -1
  •   inspectorG4dget    14 年前

    这是因为p[i:j]返回一个新列表。我能想到这个直接的解决办法:

    l = p[i:j]
    l.sort()
    a = 0
    for x in range(i, j):
        p[x] = l[a]
        a += 1