组合数据类型
1.序列: 分为 列表---list 和 元组---tuple
相同点:都可以包含任何类型的 多个数据,并且元素之间有顺序关系,访问元素时 可以通过下标数值 指定某一个元素
区别: 元组是固定数据(内部元素一旦确定后 不能改变), 列表的元素可变
声明元组: 使用小括号 表示初始化元素
t=(1,2.5,True,"abc")
声明列表: 使用中括号 表示初始化元素
l1=[1,2.5,True,"abc"]
l2=[] # 可声明空列表, 之后再增加元素
统一使用方括号 加下标访问某一个元素
print(t[0]) # t[0] 表示列表第一个元素
print(l1[-1]) # l1[-1] 表示访问倒数 第一个元素
可以访问一个区间内的所有元素 [n1:n2] 从n1下标到n2下标之间的所有元素(不包含n2号元素); [n1:] n1号下标之后的所有元素
字符串 可以当做元组 看待, 每一个字符 就是一个元素
str1="abcdefghijk"
print(str1[-3:]) # 从倒数第3到 到最后的元素
print(str1[3:6]) # 获取3号到5号元素
print(str1[3:8:2]) # 获取3号到7号元素中 每间隔一个元素获取
修改元素 ,只能对列表
t[0]=10 元组不支持改变元素
验证 list的常用方法
1.追加元素
l2.append(10)
l2.append(20.5)
print(l2)
2.插入元素
l2.insert(1, True)
print(l2)
3.移除一个数值的 元素
l2.remove(20.5)
print(l2)
4.指定元素位置 “弹出”pop 一个元素
v=l2.pop(0)
print(v)
print(l2)
5.列表内部元素排序, 元素必须都是 数值类型 才能排序
l3=[5,9,4,8,3,7,2,6,1]
l3.sort() # 默认 按升序 排序
print(l3)
l3.sort(reverse=True) # reverse=True 表示 倒序
print(l3.sort(reverse=True))
6.如果对元组排序
t2=(5,9,4,8,3,7,2,6,1)
print( sorted(t2) )
print(t2)
2.无序 组合数据类型: 集合--set 字典--dict
相同点:set 和 dict内部 都可以保存 任意类型的多个数据,这些数据之间没有顺序关系,所以在获取 内部元素是只能随机获取一个;set 和 dict 的元素都是唯一的, 字典中只是key必须唯一
区别:set内部的每个元素是单个数据,dict 内部的每一个元素 是一对数据(称为 键值对)
声明 set
s1={1,2,3,3,0,True,"abc",False} # 如果元素有重复会自动去除重复,1 和 True 是一样的数据
print(s1) #因为 元素是无序的, 所以打印时 显示没有固定顺序, 代表获取元素 是随机的
通过列表创建集合
l1=[1,2,3,3]
s2=set(l1) # 把列表转成 集合类型, 过程中 会自动 去除 重复
print(s2)
声明字典
d1={1:"a",2:"b",3:"c", "d":4}
d2={"a":"hello", "T":True, "F":False, "F":123 } # 字典的key必须唯一, 如果重复了, 取最后出现的 键值对
print(d1)
print(d2)
字典的访问
1.通过key来访问对应的 value
print(d1[1],d1["d"])
2.随机获取字典中的 一个元素(键值对)
v2=d1.pop(3)
print(v2)
print(d1)
print(d1.popitem()) # 字典的popitem() 方法随机弹出一对键值对,弹出后会从字典中移除
3.字典增加或更新一个元素
d1[4]="hello" #如果没有这个key 就是增加一对 键值对
print(d1)
d1[4]="world" #更新键值对
print(d1)
集合的访问
1.只能随机弹出一个元素
print(s1.pop()) # 随机弹出一个元素后 该元素被移除
print(s1)
# s1.remove(3) # 移除的数据 必须存在
print(s1)
2.集合增加一个元素
s1.add("hello")
print(s1)
3.集合运算
s3={1,2,3,4,5,6,7,8}
s4={5,6,7,8,9,10,11,12}
print( s3 & s4) # 交集运算
print( s3 | s4) # 并集运算
print( s3 - s4) # 差集运算, 左边集合中 去掉 和右边集合中 相同的元素
print( s4 - s3)
print( s3 ^ s4) #补集运算, 取出两个集合中 唯一的部分, 去掉共同的部分
组合数据类型 课堂练习
1.假设有ip列表ipList = ["172.31.21.18","172.31.21.19","172.31.21.20",
"172.31.21.18","172.31.21.19","172.31.21.18","172.31.21.23",
"172.31.21.18","172.31.21.20","172.31.21.20","172.31.21.23",
"172.31.21.21"] 计算出 每个ip地址出现的次数
ipList = ["172.31.21.20","172.31.21.19","172.31.21.20","172.31.21.18",
"172.31.21.19","172.31.21.18","172.31.21.23","172.31.21.18",
"172.31.21.20","172.31.21.20","172.31.21.23","172.31.21.20"]
ipset=set(ipList)
c=0
ip=''
for i in ipset:
print(i,"出现了%d次" %ipList.count(i))
if ipList.count(i)>c:
c=ipList.count(i)
ip=i
print("出现次数最多的ip地址是%s,对应的次数数%d" %(ip,c) )
2.给你一个list, 例如 L = [5, 1, 2, 3, 4, 8,-5] 输出L的中位数
#中位数是指 对已排序的数集取其中间数,数集为偶数 取中间两数的平均
l1 = [5, 1, 2, 3, 4, 8, -5,11]
l1.sort() # 对原始列表元素 排序
print(l1)
if len(l1) % 2 == 0 : # 如果有偶数个 元素
print("列表元素的中位数是", (l1[len(l1) // 2] + l1[len(l1) // 2 - 1]) / 2)
else:
print("列表元素的中位数是", l1[len(l1) // 2]) # len(l1) // 2 列表元素个数 “整除”2。 序列下标写小数会报错
3.给你一个字典a = {1:1, 2:2, 3:3}, 输出字典a的keys ,以',' 连接,如 '1,2,3'。
#字符串连接的方法字符串型数据.join字符串列表
a = {1:1, 2:2, 3:3}
l1=[]
for i in a.keys():
l1.append(str(i))
print(",".join(l1)) # 字符串类型的 join方法拼接的 多个元素 必须都是 字符串型
网友评论