一:
1:is 和 == 的区别:
id:是指变量在内存中的存储位置;value:是指变量的值;type:是指变量的类型
当a is b 时为真时,id(a)=id(b),type(a)=type(b),value(a)=value(b)
当a == b 时为真时,value(a)=value(b),type(a)=type(b),id(a)不一定等于id(b)
2:关于拷贝:
拷贝的方式:直接赋值: 如li=li1
切片:如li[:]=li1
copy方法:li.copy()=li1
调用 copy 函数
拷贝的类型:
深拷贝和浅拷贝:(针对与变量中嵌套的可变数据类型)
浅拷贝:相当于从别人那里直接拿来,属性属于别人的,随别人的改变而改变
实现方法: - li.copy()
- li[:]
- copy.copy(li)
例: >>> l=[[‘a’,’b’],1,2]
l1=l[:]
id(l[0])
139984226697864
id(l1[0])
139984226697864
l[0].append(‘c’)
l
[[‘a’, ‘b’, ‘c’], 1, 2]
l1
[[‘a’, ‘b’, ‘c’], 1, 2]
深拷贝:相当于连同属性一同复制过来,属性属于自己,不随别人改变。
实现方法:- copy.deepcopy(li)
例:>>> import copy
l=[[‘a’,’b’],1,2]
l1=copy.deepcopy(l)
l1
[[‘a’, ‘b’], 1, 2]
id(l[0])
140017001309000
id(l1[0])
140017001310472
l[0].append(‘c’)
l
[[‘a’, ‘b’, ‘c’], 1, 2]
l1
[[‘a’, ‘b’], 1, 2]
二:元组
1:元组的定义:元组是戴了紧箍咒的列表,它可以存储任意数据类型,但是是不可变数据类型,不支持增删改查。
Y=(1,2,3,[1,2,3],True,2+3j,(1,2,3))
type(Y)
三.集合:
1.集合里面的元素是不可重复的;
s = {1, 2, 4, 1, 2, 3}
print(s,type(s))
{1, 2, 3, 4}
四:字典:
1.定义字典:
>>> s = {
'fentiao':[100, 80, 90],
'westos':[100,100,100]
}
print(s, type(s))
{'fentiao': [100, 80, 90], 'westos': [100, 100, 100]} <class 'dict'>
>>> d = dict(a=1, b=2)
>>> print(d, type(d))
{'a': 1, 'b': 2} <class 'dict'>
定义空字典:
>>> s = {}
>>> print(type(s))
<class 'dict'>
或:
<class 'dict'>
>>> d = dict()
>>> print(d,type(d))
{} <class 'dict'>
字典: key-value值, 键值对;
value值可以是任意数据类型: int,float,long, complex, list, tuple,set, dict
字典的嵌套:
students = {
'13021001': {
'name':'张龙',
'age':18,
'score':100
},
'13021003': {
'name': '张',
'age': 18,
'score': 90
}
}
print(students[‘13021003’][‘name’]): 张
formkeys方法:
romkeys第一个参数可以 list/tuple/str/set, 将列表的每一个元素作为字典的key值, 并且所有key的value值一致
2.字典的特性:
字典是不能进行索引,切片,连接,重复的
成员操作符:判断key是否存在于字典中;
d = dict(a=1, b=2)
print(‘a’ in d)
True
for循环字典:默认循环字典的key值
for i in d:
print(i)
… …
a
b
3.字典的增加:
添加或者更改key-value对
d =dict(a=1,b=2)
d[‘g’]=10
d[‘a’]=10
d
{‘a’: 10, ‘b’: 2, ‘g’: 10}
update;
如果key值已经存在, 更新value值;
如果key值不存在, 添加key-value值;
d.update({‘a’:4, ‘f’:1})
d
{‘a’: 4, ‘b’: 2, ‘g’: 10, ‘f’: 1}
setdefault:
d.setdefault(‘d’)
d
{‘a’: 4, ‘b’: 2, ‘g’: 10, ‘f’: 1, ‘d’: None}
4.字典的删除:
pop:弹出指定的key-value值
d.pop(‘a’)
4
popitem:随机删除一个key-value对
d.popitem()
(‘d’, None)
d
{‘b’: 2, ‘g’: 10, ‘f’: 1}
del :指定删除key和其对应的value值:
del d[‘b’]
d
{‘g’: 10, ‘f’: 1}
clear :清除字典
d.clear()
d
{}
5.字典的修改和查看:
services = {
‘http’:80,
‘mysql’:3306
}
查看字典里面所有的key值
print(services.keys())
查看字典里面所有的value值
print(services.values())
查看字典里面所有的key-value值
print(services.items())
字典的遍例:
for k,v in services.items(): # k,v = (‘http’, 80)
print(k , ‘—>’, v)
for k in services:
print(k, '--->', services[k])
查看指定key对应的value值, 注意: key不存在, 就会报错
print(services['http'])
print(services['https'])
get方法:get方法获取指定可以对应的value值
如果key值存在, 返回对应的value值;
如果key值不存在, 默认返回None, 如果需要指定返回的值, 传值即可;
if ‘https’ in services:
print(services[‘https’])
else:
print(‘key not exist’)
或:
print(services.get(‘https’, ‘key not exist’))