【问题标题】:Reversing a list in-place with slicing使用切片就地反转列表
【发布时间】:2020-06-29 12:59:19
【问题描述】:

有人可以帮我理解为什么s[:]=s[::-1] 可以完美运行,而s[]=s[::-1] 却不行吗?

另外,这是否会被视为就地操作(没有额外的内存)?

【问题讨论】:

  • 你希望s[]=... 做什么......?

标签: python python-3.x algorithm data-structures


【解决方案1】:

因为s[] 在 Python 中是无效语法。

相比之下,s[:] 是包含整个列表的切片的符号。你也可以写s = s[::-1]。不同之处在于,这会更改名称 s 所指的对象,而 s[:] = … 会更改列表的内容(因此是就地的)。

s = [1, 2, 3]
id(s)
# 4401507776

s[:] = s[::-1]
id(s)
# 4401507776

s = s[::-1]
id(s)
# 4434730272

id 为您提供对象的“身份”。相同的对象具有相同的 ID,不同的对象具有不同的 ID。)

【讨论】:

    猜你喜欢
    • 2018-07-27
    • 1970-01-01
    • 2011-08-18
    • 2020-03-10
    • 2016-03-09
    • 2016-04-07
    • 2019-10-22
    • 1970-01-01
    • 2021-05-22
    相关资源
    最近更新 更多