我正在通读Slicing a list in Python without generating a copy的答案。答案是
>>> a = [1000 + 1, 1000 + 1, 1000 + 1]
>>> map(id, a)
[140502922988976, 140502922988952, 140502922988928]
演示每个整数在a
中获得唯一的ID
作为健全性检查,我在自己的环境中运行了以下代码(我在python3上,所以必须在map
上调用list
)
> a = [1+1, 1+1, 1+1]
> list(map(id,a))
[140228695033632, 140228695033632, 140228695033632]
我只把1000
改成了1
,现在python给每个数字分配了相同的id!我还用1000
运行了原始代码,它给出了三个不同的id。为什么不同大小的整数的行为不同
我还想玩一些其他的不可变的
元组总是得到不同的id
> a = [(1,), (1,), (1,)]
> list(map(id,a))
[140228631126592, 140228631112728, 140228631128944]
简单字符串具有相同的ID
> a = ['a', 'a', 'a']
> list(map(id,a))
[140068125361128, 140068125361128, 140068125361128]
长字符串得到不同的ID
> a = ['a'*1000, 'a'*1000, 'a'*1000]
> list(map(id,a))
[17589280, 17579408, 17580480]
我还调查了它是否与列表有关:
> a, b = 1+1, 1+1
> a is b
True
> a, b = 1000+1, 1000+1
> a is b
False
这是怎么回事
目前没有回答
相关问题 更多 >
编程相关推荐