python_Day2:list,tuple,dirt和set区别

浅谈区别:(以下是自己的总结和理解,有不对希望指出)
可变和不可变:能不能改变原本变量指向内存中的值
要注意的是:’可变’tuple
a = (1, 2, 3, [1, 2])=>a=(1, 2, 3, [2, 1])
并没有改变指向,却改变了值,因为list是可变的;那么要保证tuple的指向和值都不变,那么必须保证tuple的每个元素不可变。

>>>a = (1,2,3,[1,2])
>>>print(id(a))
>>>a[3][0]=2
>>>a[3][1]=1
>>>print(id(a))
>>>print(a)
2051599692328
2051599692328
(1, 2, 3, [2, 1])

改变了list的值并没有改变指向地址,因为list的值是可变的

>>>a1 = [1]
>>>print(id(a1))
>>>print(a1)
>>>a1[0] = 2
>>>print(id(a1))
>>>print(a1)
2391124161544
[1]
2391124161544
[2]

可变:list,dict,set,
可不变:tuple

无序和有序:
经查阅,总结了自己的理解:list,tuple是有序的,dict,set是无序的,因为list的index填入的就是数值本身,而dict的key是进过Hash计算再填入,这就导致填入时是无序的。因为key的独一无二所以用Hash计算吧。

ag = {'x':'df','fc':6,'ed':5}
for x in ag.keys():
    print(x)

输出是一直变化的,因为键值不是数字,就算是数字,也默认按键位输出,不止真正意思上的有序
总结:
这4者可以这么组合:dict由key和value组成;key是不可变对象且独一无二,那么就可以用tuple来填入,value是可变的那么可以用list来填入,那key单独取出来,那它就是set

猜你喜欢

转载自blog.csdn.net/coolpail/article/details/81563340