python - 在 Python 中卡住?

标签 python ruby list freeze

我用 Python 编程有一段时间了,最​​近才开始在工作中使用 Ruby。语言非常相似。然而,我刚刚遇到了一个 Ruby 特性,我不知道如何在 Python 中复制它。这是 Ruby 的 freeze 方法。

irb(main):001:0> a = [1,2,3]
=> [1, 2, 3]
irb(main):002:0> a[1] = 'chicken'
=> "chicken"
irb(main):003:0> a.freeze
=> [1, "chicken", 3]
irb(main):004:0> a[1] = 'tuna'
TypeError: can't modify frozen array
        from (irb):4:in `[]='
        from (irb):4

有没有办法在 Python 中模仿这个?

编辑:我意识到我让它看起来像是只用于列表;在 Ruby 中,freezeObject 上的一个方法,因此您可以使任何对象不可变。对于造成的困惑,我深表歉意。

最佳答案

>>> a = [1,2,3]
>>> a[1] = 'chicken'
>>> a
[1, 'chicken', 3]
>>> a = tuple(a)
>>> a[1] = 'tuna'
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    a[1] = 'tuna'
TypeError: 'tuple' object does not support item assignment

另外,比照。 setfrozensetbytearraybytes

数字、字符串本身是不可变的:

>>> a = 4
>>> id(a)
505408920
>>> a = 42        # different object
>>> id(a)
505409528

关于python - 在 Python 中卡住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3942825/

相关文章:

ruby - 如何防止 "The connection was reset"错误?

list - Apache 节俭 : Returning a list/container

python - 如何修复 CentOS 6.5 上的 Python 安装

python - 为什么我的代码很慢(它还能工作吗)? [欧拉计划 12][Python 3.3]

ruby-on-rails - Ruby:比较两个数组是否匹配,并按 DESC 顺序对结果进行排序

python - 使用数据帧减去字典中列表的值

python - 如何打印因素列表的所有非重复产品

python - 绘制 Pandas 数据框列之间的关系

python - pandas:带有条件格式的 HTML 输出

ruby - ruby 中带有多行字符串的空格