1.python的变量指向的是数据的内存地址使用id()可以查看内存地址
var = 1
print(id(var))
print(id(1))
结果:
4469692464
4469692464
1.==用来判断数值是否相等
2.is则是用来判断内存地址是否相同
var = 1
var2 = 1
print(id(var))
print(id(var2))
print(var is var2)
结果:
4547663920
4547663920
True
--------------------
>>> a = 4545
>>> b = 4545
>>> id(a)
140620556436392
>>> id(b)
140620556436416
>>> a is b
False
>>> a == b
True
1. 集合的创建
name = set({1, 2, 3, 4, 5})
name = {v1,v2,v3......}
**空集合:name = set()
2. 增
set.add(value)
----------------------------
s = {1, 2, 3, 4, ‘alex‘}
s.add(‘jack‘)
print(s)
结果:
{1, 2, 3, 4, ‘jack‘, ‘alex‘}
----------------------------
set.update(interable)
s = {1, 2, 3, 4, ‘alex‘}
s.update(‘alex‘)
print(s)
结果:
{‘alex‘, 1, 2, 3, 4, ‘a‘, ‘l‘, ‘e‘, ‘x‘}
3.删
set.remove(value)
-----------------------------
s = {1, 2, 3, 4, ‘alex‘}
s.update(‘alex‘)
s.remove(‘x‘)
print(s)
结果:
{1, 2, 3, 4, ‘a‘, ‘l‘, ‘e‘, ‘alex‘}
-----------------------------
set.pop() #随机删除
s = {1, 2, 3, 4, ‘alex‘}
s.pop()
4.改
变相修改:先删除后增加
s = {1, 2, 3, 4, 5}
s2 = {2, 3, 4, 6, 7, 8}
print(s & s2) #交集
print(s | s2) #并集
print(s - s2) #差集
print(s ^ s2) #反交集
结果:
{2, 3, 4}
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 5}
{1, 5, 6, 7, 8}
s = {1, 2, 3}
s2 = {1, 2, 3, 4, 5, 6}
print(s < s2) #判断s是否是s2的子集
print(s2 > s) #判断s2是否是s的父集
结果:
True
True
1.先将列表转换成集合
2.再将集合转换为列表
l = [1, 2, 1, 1, 3, 4, 4, 5, 6, 6]
l = set(l) #将l转换为集合l
print(l)
l = list(l) #将集合l转换为列表l
print(l)
结果:
{1, 2, 3, 4, 5, 6}
[1, 2, 3, 4, 5, 6]
l1 = [1, 2, 3, [22,33]]
l2 = l1.copy()
or
l2 = l1
--------------------------
l1 = [1, 2, 3, [22, 33]]
l2 = l1.copy()
print(id(l1))
print(id(l2))
l1[-1].append(‘44‘)
print(l1)
print(l2)
print(id(l1[-1]))
print(id(l2[-1]))
结果:
4450178568
4450189768
[1, 2, 3, [22, 33, 44]]
[1, 2, 3, [22, 33, 44]]
4435180424
4435180424
#l2只复制了l1的表层元素,但嵌套的可变元素一旦被修改,两个列表都会发生变化
深copy要调用copy模块中的deepcopy()
--------------------------
l1 = [1, 2, 3, [22, 33]]
import copy
l2 = copy.deepcopy(l1)
print(id(l1))
print(id(l2))
l1[-1].append(44)
print(l1)
print(l2)
print(id(l1[-1]))
print(id(l2[-1]))
结果:
4515227144
4515238408
[1, 2, 3, [22, 33, 44]]
[1, 2, 3, [22, 33]]
4463668104
4463679176
#Python对深copy做了一定的优化,现在是不可变的数据类型可以复用
#可变的数据类型是完全独立的
原文:https://www.cnblogs.com/vvbear/p/12738727.html