元组和字典

元组

1.什么是元组(tuple)

元组就是不可变的列表
元组也是容器型数据类型,将小()作为容器的标志,多个元素之间用逗号隔开:(元素1,元素2,元素3,元素4,…)
“”"
元组不可变(不支持增删改):元组是有序的(支持下标操作)
元组中的元素要求和列表一样

“”"

tuple1=()
print(type(tuple1))

2)单个元素的元组

list1=[10]  # 单个元素的列表
tuple2=(10)
print(tuple2,type(tuple2)) # 10<class'int'>
tuple3=(10,)
print(tuple3,type(tuple3))

3)多个元素的元组

a.变量=(元素1,元素2,元素3,…)

tuple4=(100,200,300)
print(tuple4,type(tuple4))

b.变量=元素1,元素2,元素3…

tuple5=10,20,30,40
print(tuple5,type(tuple5))

2.获取元组中的元素

1) 列表获取元素的方式,元组都支持

a.获取单个元素

names='生活大爆炸','权利的游戏','吸血鬼日记','破产姐妹','兄弟连','尼基塔'
print(names[-2])

b.切片

print(names[1::2]) #('权利的游戏','破产姐妹','尼基塔')

c.遍历

for x in names:
        print(x)
print('==================')
for index in range(len(names)):
    print(names[index])

2)其他方式

a.变量1,变量2,变量3,…=元组
注意:在这儿变量的个数要和元组中元素的个数保持一致

tuple6=(10,70,45)
x,y,z=tuple6
print(x,y,z) #10 78 45

num1,num2=100,200

b.变量1,变量2,变量3,…=元组
前面的变量的个数小鱼元组中元组的个数,并且有且只有一个变量前有*

person=('余婷','女',18,100,89,50)
name,gender,age,*num=person
print(name,gender,age) # 余婷 女 18
print(num) #[100,89,50]
*x,y,z=10,90,89,78,89
print(y,z) # 78,89
print(x) #[1,90,89]

a,b,*c,d,e=1,2,3,4,5,6,7,8,9
print(a,b) # 1 2
print(d,e) # 8 9
print(c) #[3,4,5,6,7]

补充:*的解包功能

list1=[10,20,30]
print(*list1) #10 20 30 print(10,20,30)

3列表相关操作全部适用于元素

字典基础

定义一个变量保存一个学生的信息

stu =['张三',30,'男','10011',170,665,89]
print(stu[1])
print(stu[-1])

stu={'name':'张三','age':30,'gender':'男'}
print(stu['name'])
print(stu['gender'])

0.什么时候使用字典
a.需要同时保存多个数据 b.多个数据到底意义不同(需要做区分)

1.什么字典(dict)

“”"
字典是容器型数据类型,将{}作为容器的标志,多个元素用逗号隔开(字典的元素都是键值对):{键1:值1,键2:值2,…}
字典是可变(支持增删改):字典是无序的,(不支持下标操作)
字典中元素:键值对
键 -不可变;必须是唯一
值-任何类型的数据,可以重复
字典在保存数据的时候,真正想要保存的是值,键是用来对值进行区分和说明
“”"

空字典

dict1={}
dict2={2:23,'abc':'hello',(1,2):200}
#字典的key不可变
#dict3={[1,2]:100,'abc':200} 会报错
dict3={'a':102,'b':20,'a':100}
print(dict3) #{'a':100,'b':20}
print({'a':'b','c':'d'}=={'c':'d','a':'b'})#True

2. 获取字典的值

1)获取单个元素对应的值

“”"
a.字典[key] -获取字典中指定Key对应的值(如果key不存在会报错)
“”"

dog={'name':'狗王','age':3,'breed':'土狗','gender':'公','weight':10}
print(dog['name'])
print(dog['gender'])
#print(dog['height']) #报错

“”"
b.字典(key)-获取字典中指定key对应的值(如果key不会报错,返回None)
字典.get(key,默认值)-获取字典中指定Key对应的值(如果key不存在,返回默认值)
“”"

print(dog.get('breed'))
print(dog.get('height')) # None 不会报错
print(dog.get('height',40)) #40

2)遍历

“”"
a.需要掌握和适用的遍历方法(效率最高)
for 变量 in 字典:
循环体
注意:变量取到的是字典中所有的key
“”"

dog={'name':'狗王','age':3,'breed':'土狗','gender':'公','weight':10}
for x in dog:
    print(x,dog[x])

“”"
b.其他两种情况(知道)
for 变量 in 字典.values():
循环体
变量取到的是字典所有的值
“”"

print('=============')
for x in dog.values():
    print(x)

“”"
c.其他两种情况2(知道)
for 变量1,变量2 in 字典.items():
循环体
变量1能取到字典所有的key,变量2取到的是字典所有的值

“”"

print('==================')
for x,y in dog.items():
    print(x,y)

练习1:声明一个变量同时保存4个学生的信息(每个学生需要包括:姓名,年龄,电话,成绩)

s1=[{'name':'阿狂','age':18,'phone':133355021,'score':88},{'name':'阿水','age':16,'phone':136355021,'score':98},{'name':'阿sir','age':20,'phone':136375021,'score':68},{'name':'阿伟','age':17,'phone':136375020,'score':55}]
print(s1)

练习2:统计上面4个学生中未成年人的个数

count=0
for x in s1:
   if x['age']<18:
       count+=1
print(count)

字典元素的增删改

1.增 -添加键值对

“”"
语法:
字典[key] = 值
如果key存在,就将key对应的值修改成指定的值
如果key不存在,以’key:值’的形式添加一个键值对(增)
“”"

movie={'name':'西游记','time':'1978-10-23','director':'吴承恩'}
#改
movie['time']='1989-10-25'
print(movie)
# 增
movie['score']=9.0
print(movie)
# 不会修改
movie.setdefault('score',8.0)
print(movie)
# 可以增加
movie.setdefault('type','神话')
print(movie)
# 3.删

“”"
1)del
del 字典[key] -删除指定key对应的键值对(key不存在会报错)
“”"

movie ={'name':'西游记','time':'1978-10-23','director':'吴承恩'}
del movie['director']
print(movie)

“”"
2)pop
字典.pop(key) -取出字典中指定Key对应的值,并且返回被取出的值
“”"

value=movie.pop('time')
print(movie,value)

字典相关的操作和方法

1.字典相关操作

字典不支持加法和乘法运算

1)比较运算

字典只支持比较相等,不支持比较大小

print({'a':1,'b':2}=={'b':2,'a':1}) # True

2) in 和 not in

“”"
数据 in 字典 -判断字典中是否存在指定的key
数据 not in 字典-判断字典中是否不存在指定的key
“”"

cat={'name':'花花','age':2,'color':'白色'}
print('name'in cat) # True
print('花花'in cat) # False

3)相关的函数

“”"
a.len(字典) -统计字典中键值对的个数
“”"

print(len(cat)) # 3

“”"
b. dict(数据) -将自定的数据转换成字典
数据的要求:1.是容器型数据类型 2.元素是有且只有两个3.小容器中的第一个元素是不可变的
“”"

x=[(1,2),(3,4),(5,6)]
dict1=dict(x)
print(dict1)  #{1:2,3:4,5:6}
x=('ab','cd','xy')
dict2=dict(x)
print(dict2) #{'a':'b','c':'d'....}

“”"
c.字典转换成其他的数据类型
bool(字典)-空字典会转换成Fales,其他都是True
list(字典)-把字典所有的key作为列表的元素
tuple(字典)-将字典所有的key作为元组的元素
“”"

cat={'name':'花花','age':2,'color':'白色'}
print(list(cat)) #['name','age','color']

2.相关方法

1)字典.clear() -清空字典

cat.clear()
print(cat)

2)字典.copy() -复制字典产生一个新的字典并且返回

cat={'name':'花花','age':2,'color':'白色'}
cat1=cat.copy()
cat1['name']='咪咪'
print(cat) #{'name':'花花'....}

3)dict.fromkeys()

“”"
dict.fromkeys(序列) -创建一个新的字典,字典的key是序列中的元素,值是None
dict.fromkeys(序列,值)-创建一个新的子弹,字典的key是序列中的
“”"

dict3=dict.fromkeys('abc')
print(dict3) #{'a':None,'b':None,'c':None}
stu=dict.fromkeys(['name','age','gender','tel','address','score'])
print(stu)

stu1=stu.copy()
message=['张三','李四','王五']
for name in message:
    new_stu=stu.copy()
    new_stu['name']=name
    print(new_stu)
stu2=(['name','age','gender','tel','address','score'],0)
print(stu2)

4)items,keys,values

“”"
字典.keys()-获取字典所有的key,返回一个容器(这个容器不是列表)
字典.values()-获取字典所有的值,返回一个容器(这个容器不是列表)
字典.items()-获取字典所有的key和值,返回一个容器,容器中的元素是元组,每个元组对应一个键值对(这个容器不是列表)
“”"

cat={'name':'花花','age':2,'color':'白色'}
print(cat.keys()) #dict_keys(['name','age','color'])
print(cat.values()) # dict_values(['花花',2,'白色'])
print(cat.items()) # dict_items([('name','花花'),('age',2)....])

5)update

“”"
字典.update(序列) -用序列生成的字典去更新原字典(更新方式:不存在就添加,存在就修改)
“”"

dict4={'a':10,'b':20,'c':30}
dict4.update({'a':100,'d':40})
print(dict4) #{'a':100,'b':20,'c':30,'d':40}

集合

1.什么是集合(set)

“”"
集合是容器型数据类型,将{}作为容器的标志,里面多个元素用逗号隔开:{元素1,元素2,元素3,…}
集合是可变的(支持增删改);集合是无序的
集合中元素是不可变并且唯一的
“”"
空集合

empty=set() #{}空字典
#非空集合
set1={1,23,34}
set2={(1,2),3,4} #列表不能作为集合的元素
set4={1,2,3,1,4,1}
print(set4) #{1,2,3,4}
print({1,2,3}=={2,3,1}) # True (说明集合无序)

2.集合中元素的增删改查

1)查

集合没有办法直接获取单个元素,只能遍历
“”"
for 变量 in 集合:
循环体
变量取到的就是集合中每个元素
“”"

nums ={23,34,90,89}
for x in nums:
    print(x)

2)增

“”"
a.集合.add(元素)-在集合中添加指定元素
b.集合.update(序列)-将序列中的元素全部添加到集合
“”"

nums.add(100)
print(nums) #{34,100,23,89,90}
nums.update('abc')
print(nums) #{34,100,'c','b',23,89,90,'a'}
nums=set()
nums.update({'a':10,'b':20})
print(nums) #{'a','b'}

3)删

“”"
集合.remove(元素)-删除集合中指定的元素(元素不存在)
集合.discard(元素)-删除集合中指定的元素(元素不存在不会报错)
“”"

nums={10,89,76,90,34}
# nums.remove(10)
nums.discard(10)
print(nums)
# nums.remove(100)#报错
nums.discard(100)#不报错
#4)改-集合无法修改元素

3.数学集合运算

python 中的集合支持数学集合运算:&(交集)、|(求并集)、-(求差集)、对称差集(^)>/<(判断是否是真子集)

print({1,2,3,4,5}&{4,5,6,7,8,9})

1)交集:求两个集合的公共部分

print(set1&set2) #{4,5}
#2)并集:两个集合合并成一个集合
print(set1 | set2)#{1,2,3,4,5,6,7,8,9}
#3) 差集:集合1-集合2 集合1中除了集合2 剩余的部分
print(set1-set2) #{1,2,3}
print(set2-set1) #{8,9,6,7}

4)对称差集:去掉两个集合公共的部分剩下的部分

print(set1^set2) #{1,2,3,6,7,8,9}

5)真子集

集合1>集合2 - 判断集合2是否是集合1的真子集
集合1<集合2 - 判断集合1是否是集合2的真子集

print({100,200,300,400}>{10,20}) # False
print({1,10,20}>{10,20}) #True
print({1,10,20}>{10,20}) #False
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值