当前位置: 首页 > 面试题库 >

分配list [:] = […]时冒号在Python中做什么?

邓建柏
2023-03-14
问题内容

我遇到以下代码:

# O(n) space       
def rotate(self, nums, k):
    deque = collections.deque(nums)
    k %= len(nums)
    for _ in xrange(k):
        deque.appendleft(deque.pop())
    nums[:] = list(deque) # <- Code in question

这是什么nums[:] =nums =不?就此而言,那没有nums[:]做什么nums呢?


问题答案:

此语法是切片分配。一片[:]意味着整个列表。nums[:] =和之间的区别在于nums =后者不会替换原始列表中的元素。当有两个引用列表时,这是可见的

>>> original = [1, 2, 3]
>>> other = original
>>> original[:] = [0, 0] # changes the contents of the list that both
                         # original and other refer to 
>>> other # see below, now you can see the change through other
[0, 0]

要查看差异,只需[:]从上面的分配中删除。

>>> original = [1, 2, 3]
>>> other = original
>>> original = [0, 0] # original now refers to a different list than other
>>> other # other remains the same
[1, 2, 3]

从字面上看,如果list是变量名而不是内建函数,则将问题的标题替换为省略号

>>> list = [1,2,3,4]
>>> list[:] = [...]
>>> list
[Ellipsis]


 类似资料:
  • 问题内容: 我知道构造函数会创建一个新列表,但是它的特征到底是什么? 打电话时会怎样? 打电话时会怎样? 打电话时会怎样? 据我所知,调用构造函数会删除最外面的花括号(元组或列表),并将其替换为。这是真的?还有什么其他细微差别? 问题答案: 将传递给它的iterable转换为列表。如果itertable已经是一个列表,则返回 浅表副本 ,即仅最外层的容器是新的,其余对象仍然相同。

  • 问题内容: 显然,Java中冒号以多种方式使用。有人介意解释它的作用吗? 例如这里: 您将如何以不同的方式编写此循环,以便不合并? 问题答案: 在Java代码中冒号有几个地方: 1)跳出标签): 2)三元条件: 3)每个循环: 4)断言: 5)切换语句中的情况: 6)方法参考

  • 问题内容: 操作数是什么意思,更具体地说是Python? 有人可以解释如何阅读此代码段吗? 问题答案: 更新的答案 在问题的上下文中,我们正在处理伪代码,但是从Python 3.8开始 ,它实际上是一个有效的运算符,它允许在表达式中分配变量: 有关更多详细信息,请参见PEP 572。 原始答案 您发现的是 伪代码 伪代码 是计算机程序或其他算法的工作原理的非正式高级描述。 实际上是赋值运算符。在P

  • 问题内容: 我在线上有一个功能来帮助我完成当前的项目,并且在某些行上有分号。我想知道为什么?会破坏功能吗? 我上线的功能几乎没有修改: 以上是在说以下吗? 问题答案: 分号在您显示的代码中不执行任何操作。 我怀疑这是一个使用另一种语言(C,Java等)进行编程的人,在语句的末尾需要使用分号,这只是一种习惯(有时也对我而言)。 如果要将多个Python语句放在同一行上,可以使用分号将它们分开,请参见

  • 问题内容: CSS 中的双冒号()是什么意思? 例如: 问题答案: 这意味着 伪元素 选择器。这意味着右边的 元素 在普通DOM中不存在,但是可以选择。 伪元素由两个冒号(::)组成,后跟伪元素的名称。 它最初只有一个冒号,而是改为从区分其 伪类 (如,,等)。最好使用for 和伪元素,因为单个冒号具有更好的浏览器支持,即在较早的IE版本中。

  • 关于使用问号“?”的两个问题和冒号“:”运算符在打印函数的括号内:它们做什么?还有,有人知道它们的标准术语吗?或者我在哪里可以找到更多关于它们使用的信息?我读到过,它们类似于“if”“else”语句。