容器性数据
1.元祖(tuple)
1.什么是元祖(tuple)
python提供的容器型数据类型,不可变并且有序
不可变 -- 不支持增删改,只支持查
有序 -- 每一个元素都对应一个确定的下标
2.字面量和元素
(元素1,元素2,元素3.....)
元素 -- 可以是任何数据类型,并且类型可以不一样,
也可以同样的元素有多个
point=(100,30)
print(point,type(point))
注意:
空的元祖:()
tuple1=()
print(type(tuple1))
2,只有一个元素的元祖,必须在元素后面加一个逗号
tuple2=(100,)
3,直接将多个元素用逗号隔开,不加小括号表示的也是元祖
tuple3=1,2,3
print(tuple3,type(tuple3))
3.元祖获取元素和列表是一样的,切片
tuple4=('成都','达州','绵阳','南充','广元')
获取单个
print(tuple4[1],tuple4[-1])
获取部分
print(tuple4[0:3])
遍历
for city in tuple4:
print(city)
for index in range(len(tuple4)):
print(tuple4[index])
补充:特殊的获取方式
1,变量1,变量2...=元祖 ---->用前面的变量依次去获取元祖中元素的值
(要求前面变量的个数和元祖元素的个数一致)
point=(100,200)
x,y=point
print(x,y)
2.变量1 * 变量2 = 元祖---通过带的变量获取元祖中剩余的部分
注意:在这个结构中,带的变量只能有一个,不带*的变量可以有多个
name,*scores=('小花',100,89,67,99)
print(name,scores) #小花 [100, 89, 67, 99]
name,num,*scores=('小花',100,89,67,99)
print(name,num,scores) #小花 100 [89, 67, 99]
*info,num1,num2=('小花',100,89,67,99) # ['小花', 100, 89] 67 99
print(info,num1,num2)
补充 *的用法
1,取元祖和列表中的数据
nums = (1,2,3)
nums2 = [11,22,33]
print(*nums,*nums2) # 1 2 3 11 22 33
相关运算
+ *
in / not in
len(),max(),min(),sum(),tuple()
tuple1=(1,2,3)
tuple2=('aa','bb')
print(tuple1+tuple2) # (1, 2, 3, 'aa', 'bb')
print(tuple2*3) # ('aa', 'bb', 'aa', 'bb', 'aa', 'bb')
5.排序
sorted(序列) -- 对序列中的元素排序产生一个新的列表,不管什么序列,返回的都是列表
注意:列表.sort()--修改列表中元素的顺序
sorted(列表)--产生一个新列表
tuple4=(12,56,34,89,2,5,8,4,3,1,9,8,7,5,4)
new_tuple4=sorted(tuple4,reverse=True)
print(new_tuple4)
new_tuple2=sorted('asdasdadasdasdasfdf')
print(new_tuple2)
join 的使用
字符串.join(序列)--将序列中的元素取出用指定的字符串连接在一起,要求序列中的元素必须是字符串
new_str=''.join(new_tuple2)
print(new_str)
print([1,2,3,4,5][::-1])
字典
1.什么是字典(dict)
python提供的容器性数据类型,可变并且无序的
可变 - 支持元素的增删改
无序 - 不支持下标操作
2.字面量和元素
用大括号括起来,里面有多个键值对,每个键值对用逗号隔开。键值对就是字典的元素
{'a':1,'b':2}{key1:value1,key2:value2}
键值对-- 键:值 / key:value
注意; 键值对必须成对出现,而且脱离字典单独出现是没有任何意义的
键/key - 必须是不可变的,而且是唯一的。实际一般将字符串作为键
值/value - 可以是任意数据类型
注意,字典存数据是通过值来储存的,key是值对应的标签和获取值的方式
dict1 ={'a':100,'b':200,10:10}
3.什么时候使用字典:多个没有相同意义的数据(需要区分),就使用字典。例如保存一个人的信息,一辆车的不同信息
什么时候使用列表:存储的多个数据是相同意义的数据(不需要区分),就是用列表,
练习;申明一个斌量,
保存一个班的学生信息,每个学生需要保存姓名电话年龄
class_student=[]
stu_message1={'name':'xiaohua','age':23,'tel':13600000000}
字典元素的增删改查
1.查(获取值)
注意:字典中的键值对单独拎出来没有意义
a. 字典[key]--获取key对应的值
注意;当key不存在会报错keyerror
b. 字典.get(key) -- 获取key对应的值,当key不存在的时候不会报错,并且会取到一个默认值None
字典.get(key,值1)-- 获取key对应的值,当key不存在时,会返回默认值1
c。 遍历字典 --
注意;直接通过for循环遍历字典取到的是key
car = {'color':'黄色','type':'跑车','price':500000}
print(car['color'])
print(car['price'])
print(car.get('color'))
print(car.get('speed',20))
dict1={'a':2,'b':4,'c':3}
for key in dict1:
print(key,end=' ')
print(dict1[key])
遍历字典的value(),获取所有的值
for value in dict1.values():
print(value)
遍历字典的items,截止获取key和value
for key,value in dict1.items():
print(key,value)
2,增和改
a.字典[key] = 值 ---当key不存在就是添加键值对
---当key存在的时候就是修改key对应的值
3.删除
删除键值对:
del 字典[key] - 删除指定的key对饮的键值对
字典相关方法
1.比较运算 --
a. == 、!=
注意:判断两个字点是否相等,只看键值对是否一样,不看键值对的顺序
字典不支持 > 和 < 符号
2. in 和 not in
key in 字典 ---判断字典中是否存在指定的key
key not in 字典
dict1={'a':1,'b':2,'c':3}
print('a'in dict1)
3.len()---获取字典键值对的个数
max()---获取字典键最大值
min()---获取字典键最小值
dict(数据)---将指定数据装换成字典
要求:首先必须是序列,其次序列中的元素必须是有两个元素的子序列
字典转列表/元祖/集合都是将所有的key取出来作为列表/元祖/集合的元素
4.相关方法
1.字典.clear() --- 清空字典
2.字典.copy() --- 复制字典中的元素产生新的字典。注意:拷贝赋值会产生新的地址
3.dict.fromkeys(序列,值)--以序列中的元素作为key,用值来作为value,
产生一个新的字典
4.字典.keys() -- 将字典所有的key取出产生新的序列
字典.values() -- 将字典所有的value取出产生新的序列
字典.items() -- 将字典所有的键值对作为元祖元素产生一个新的序列
5.字典.setdefault(key,value)---注意;当key存在的时候,不会修改
a.字典.setdefault(key) - 当key不存在的时候,添加键值对key:None
b.字典.setdefault(key,value)当key不存在的时候,添加键值对key:value
6.字典.update(序列)--将序列中的元素更新(如果字典里面存在键值对就是修改,不存在就是添加)到指定字典里面
# 1字典.clear
dict1.clear()
print(dict1) # {}
# 3 dict.fromkeys()
str1='as123'
new_dict = dict.fromkeys(str1,20)
print(new_dict) #{'a': 20, 's': 20, '1': 20, '2': 20, '3': 20}
# setdefault
dict2={'a':1,'b':2,'c':3}
dict2.setdefault('d',4)
print(dict2) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# update
dict2={'a': 1, 'b': 2, 'c': 3, 'd': 4}
dict2.update({'e':5,'f':6})
print(dict2)
集合
1.什么是集合(set)
可变的无序的,元素是唯一不可变的
2.字面量
{元素1,元素2....}
set2=set() -- 空集合
集合自带去重功能
set1={1,23,'asd'}
print(set1)
set2=set()
增删改查
a.查。
只能通过遍历元素,集合不能获取单个元素
b.增
集合.add(元素)--- 在指定的集合添加指定元素
集合.update(序列)--- 将序列中的元素添加到集合里面
c.删
集合.remove(元素)---删除集合中指定的元素
set1={1,2,3,4,5,7}
set1.add(8)
print(set1)
4.数学集合运算
交集(&):两个集合的公共元素
并集(|):将两个集合中的元素合并在一起产生一个新的集合,会自动去重
差集(-):去掉集合1中包含集合2中的公共部分剩下的部分产生一个新的部分
补集(^):将两个集合合并在一起,去掉公共部分,留下剩下的部分
子集的判断:集合1>集合2--判断集合1中是否包含集合2
集合1<集合2--判断集合2中是否包含集合1