【问题标题】:In-place sort of sublist就地排序的子列表
【发布时间】:2014-02-18 07:27:57
【问题描述】:

有可能吗?显然x[1:-1].sort() 不起作用,因为切片是副本。

当前解决方法:

>>> x = [4, 3, 1, 2, 5]
>>> s = slice(1, -1)
>>> x[s] = sorted(x[s])
>>> x
[4, 1, 2, 3, 5]

我能以某种方式在 python 列表中获得 view 吗?

【问题讨论】:

  • 现在在 python 中存在一个列表视图,afaik,因为它存在于 dict 的(dict.viewkey 等)。我在列表中看不到任何视图的用例,那么视图是什么意思以及它应该提供什么? (b=x 会是某种视图,虽然它很没用)。
  • x[1:-1] = sorted(x[1:-1]) 在我看来相当简洁。你为什么不喜欢它?
  • 我猜你是对的。取切片是 O(n) 但这无关紧要,因为无论如何排序都是 O(n*log(n))

标签: python list sorting view slice


【解决方案1】:

如果numpy 是一个选项:

>>> x = np.array([1, 8, 90, 30, 5])
>>> x[2:].sort()
>>> x
array([ 1,  8,  5, 30, 90])

numpy 数组 slices 始终是原始数组的视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2013-05-11
    • 2019-07-15
    • 2011-01-17
    • 2022-01-09
    相关资源
    最近更新 更多