- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个列表,a = [0,1,2,3,4,5]
。
我正在尝试使用 a[1:4].reverse()
反转切片 a[1:4]
。但是,a
的值不会改变。为什么会这样?
注意:我不想知道如何进行这项工作 - 而是,为什么会发生这种情况。
最佳答案
使用 list
的小监视器包装器(子类)可能最容易看到:
class ListWrapper(list):
def __setitem__(self, key, value):
print(f'__setitem__ was called on {id(self)}')
super(ListWrapper, self).__setitem__(key, value)
def __getitem__(self, item):
print(f'Get Item was called on {id(self)}')
n = ListWrapper(super(ListWrapper, self).__getitem__(item))
print(f'New id is {id(n)}')
return n
def reverse(self):
print(f'Reversed Called on {id(self)}')
super(ListWrapper, self).reverse()
本质上,ListWrapper
在此操作中使用的方法中包含了一些打印语句:
a = ListWrapper([0, 1, 2, 3, 4, 5])
print('ID of `a` is', id(a))
a[1:4].reverse()
print('ID of `a` is', id(a))
其输出为:
ID of `a` is 2002062741728
__getitem__ was called on 2002062741728
New id is 2002062745088 # Notice the ID is different
reverse called on 2002062745088 # Reverse is called on this new object
ID of `a` is 2002062741728 # The id of `a` has not changed
我们无法访问 ID 为 2002062745088
的值,因为我们在任何地方都没有包含此信息的变量。
回应评论中的一个问题:“如果是这样,那为什么 a[1:4] = [3,2,1] 会改变 a 的值?”
让我们再看看那个操作:
a = ListWrapper([0, 1, 2, 3, 4, 5])
print('ID of `a` is', id(a))
a[1:4] = [3, 2, 1]
print('ID of `a` is', id(a))
其输出为:
ID of `a` is 2760760102160
__setitem__ was called on 2760760102160
ID of `a` is 2760760102160
请注意 a
始终具有相同的 id
。并且上一个示例中的函数都没有被调用(__getitem__
和 reverse
)。因此,更新发生在列表 a
上,它的结果是可访问的。
关于python - 为什么 reverse() 在列表的特定片段上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68554249/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!