9.16总结
Posted lidandanaa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.16总结相关的知识,希望对你有一定的参考价值。
元组
1.定义:只可取,不可更改的列表,()内用逗号隔开多个元素(可以为任意数据类型)
#lt=list([1,2,3])
tup=tuple((1,2,3))
print(tup,type(tup))
运行结果:
(1, 2, 3) <class 'tuple'>
2.作用:元组一创建就被写死了
如果元组只有一个元素,必须得加逗号
tup1=(1,)
print(tup1,type(tup1))
运行结果:
(1,) <class 'tuple'>
3.使用方法:
索引取值
print(tup[0]) #1
索引切片
print(tup[0:3]) #(1,2,3)
for循环
for i in tup:
print(i) #1 2 3
成员运算
print(0 in tup) #false
len长度
print(len(tup)) #3
index获取元素索引
print(tup.index(1)) #0
计数
print(tup.count(2)) #1
有序or无序:有序
可变or不可变:不可变
字典
*字符串/列表/字典--》常用,他们三个就足够描述世间万物了
其他数据类型可以被替代--》列表替代元组,redis数据库替代集合
1.字典作用:存储多个数据,对每个数据具有描述
2.定义方式:内用逗号隔开多个键key(具有描述意义,不能为可变数据类型):值value(任意数据类型)对#散列表(哈希表)
3.使用方法:
按key取值/按key修改值
dic='a':1,'b':2,'c':3
print(dic['a']) #1
dic['b']=4
print(dic) #'a': 1, 'b': 4, 'c': 3
添加值,没有就添加,有就修改
dic['d']=4
print(dic) #'a': 1, 'b': 4, 'c': 3, 'd': 4
for 循环 (只循环key)
for i in dic:
print(i) #只循环key
成员运算
print('a' in dic) #True
len 长度
print(len(dic)) #4
del/pop/popitem 删除
del dic['a']
print(f'dic.get('a'):dic.get('a')')
运行结果:
dic.get('a'):None
dic.pop('a')
print(f"dic.pop('b'): dic.pop('b')")
print(f"dic.get('a'): dic.get('a')")
运行结果:
dic.pop('b'): 1
dic.get('a'): None
print(f"dic.popitem():dic.popitem()") #popitem()随机返回并删除字典中的一对键和值(一般删除末尾对)
运行结果:
dic.popitem():('j', 2)
keys/values/items 键/值/对
print(dic.keys()) #看成列表
print(dic.values())
print(dic.items())
for i in dic.items():
print(i) #循环键值对
get 获取 ,字典中没有返回None,可以给定一个默认值
print(dic.get('b',1)) #4
#print(dic.get('b') #打印结果一样
update 更新 相当于list里的extend扩展
dic1='a':1,'c':2
dic2='b':1,'d':2
dic1.update(dic2)
print(dic1)
setdefault 字典有这个key,就不修改,没有则增加
dic.setdefault('j',2)
dic.setdefault('a',2)
print(dic)
有序or 无序:无序
可变or不可变:可变(值变id不变)
集合
交集/并集/补集/差集
1.作用:进行上述运算,去重,乱序--》基于散列表实现的
2.定义方式:内以逗号隔开多个元素(不能为可变数据类型)
s= #空字典
print(type(s))
s=set() #空集合
print(type(s))
运行结果:
<class 'dict'>
<class 'set'>
s = 'a', 'a', 'a', 'a', 1, 'v', 2, 2, 'c', 3, 3, 4, 5, 6 # 对于数字而言,不会乱序;但是对于其他,就乱序
print(s)
运行结果:
1, 2, 3, 4, 5, 6, 'v', 'c', 'a'
3.使用方法:
s1='jason','nick','tank','sean'
s2='nick','egon','kevin'
#并集
print(s1|s2)
#交集
print(s1&s2)
#差集
print(s1-s2) #前面的减去两者重合的
#补集
print(s1^s2) #除了交集剩下的
#add
s1.add('ocean')
print(s1)
删除值 remove/discard/pop
s1.remove('cases') #没有此值就报错
print(s1)
s1.discard('cases') #没有此值不报错
print(s1)
s1.pop() #随意删除一个值
print(s1)
有序or 无序:无序
可变or不可变:可变(值变id不变)
深浅拷贝
可变:值变id不变
不可变:值变id变
1.拷贝(赋值)
当y为x的拷贝对象,如果x为不可变类型,x变化y不变,如果x为可变类型,则x和y都变化
x=10
y=x
x+=1
print(y) #10
x=[1,2,3]
y=x
x+=[4]
print(y) #[1, 2, 3, 4]
2.浅拷贝
如果l2是l1的浅拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,则l2会跟着改变
import copy
l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
l2 = copy.copy(l1)
l1.append('g')
print(l1)
print(l2)
l1[3].append('g')
print(l1)
print(l2)
运行结果:字符串不可变,列表可变
['a', 'b', 'c', ['d', 'e', 'f'], 'g']
['a', 'b', 'c', ['d', 'e', 'f']]
['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
['a', 'b', 'c', ['d', 'e', 'f', 'g']]
3.深拷贝
当lt2是lt1的深拷贝对象时,lt1内部的不可变类型变化,lt2不变;lt1内部的可变类型变化,lt2不变
import copy
l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
l2 = copy.deepcopy(l1)
l1.append('g')
print(l1)
print(l2)
l1[3].append('g')
print(l1)
print(l2)
运行结果:
['a', 'b', 'c', ['d', 'e', 'f'], 'g']
['a', 'b', 'c', ['d', 'e', 'f']]
['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
['a', 'b', 'c', ['d', 'e', 'f']]
以上是关于9.16总结的主要内容,如果未能解决你的问题,请参考以下文章