python进阶之路

Day6

hello world!今日是python学习的第六天,我将会在下面文章对基础语法进行一些介绍,主要为元组与字典的深入学习等。

1. 元组

1.1 元组是不可变列表

​ 元素可以是任何类型的数据。

tuple1 = (10,'abc',[1,2])
print(tuple1)

​ 列表获取元素的方法都适用于元组

tuple2 = ('杨幂','刘亦菲','赵丽颖','张艺馨','孙俪')
print(tuple2[1])
1) 遍历
for x in tuple2:print(x,end = ',')for index,item in enumerate(tuple2):print(index,item)
2) 切片
print(tuple2[1:4:2])
3) 列表相关操作都适用于元组
print((1,2,3) + ('a','b'))
print((1,2,3) * 3)
print((1,2,3) == (1,3,2))
print((1,2,3) == (1,2,3))
print((100,200,300) > (100,100,300))
nums = (10,43,54,65,76)
print(max(nums))
print(tuple('abc'))
print(len(nums))
print(sorted(nums))
print(max(nums))
print(min(nums))
4) 相关方法
nums = (10,32,65,9,4,64,1)
print(nums.count(10))
print(nums.index(32))
1.2 元组特有的一些方法与功能
1) 只有一个元素的元组:()中唯一的元素后需要添加逗号
list1 = [100]
print(type(list1))tuple1 = (100)
print(type(tuple1))tuple1 = (100,)
print(type(tuple1))
2) 直接多个数据用逗号隔开表示的也是一个元组(元组的括号在没有歧义的时候可以省略)
tuple2 = (100,200,300)
tuple3 = 100,200,300
print(type(tuple3))
3) 获取元素的时候可以通过让变量的个数和元组中元素的个数保持一致,来分别获取元组中每个元素的值。
point = (100,200)
x,y = point
print(x,y)
point = 100,200,300
x,y,s = point
print(x,y,s)a,b,c = 10,20,30 # 相当于元组给变量赋值
4) 让变量的个数少于元组中元素的个数,并且在一个变量前加*。

​ 先让没有*号的变量依次获取元素,然后把剩下的所有的元素作为一个列表返回。

stu = ('小明',30,'男',89,78,56,100)
name,age,gender,*scores = stu
print(name,age,gender,scores)

*号只能有一个

2. 字典

​ 问题:列表同时保存多个意义不同的数据的时候,代码的可读性很低

stu = ['小明',20,'男','15300022703','13767586542',56,170,89]

​ 解决:用字典保存多个意义不同的数据

stu = {'name':'小明','age':20,'sex':'男','tel':'15300022703','m - tel':'13767586542','weight':56,'height':170,'score':80}
print(stu['name'])
2.1 什么是字典?(dict)

​ 字典就是容器型数据类型的数据,将{}作为容器的标志,里面的多个元素用逗号隔开。(其中元素必须是键值对)
​ {键1:值1,键2:值2,键3:值3,。。。}
​ 字典是可变的(支持增删改);无序的(不支持下标操作)
​ 字典的元素:键是不可变的,唯一的;值可以是任何类型的数据,并且可以重复

print({'a':10,'b':20} == {'b':20,'a':10})
dict1 = {10:100,'abc':200,(10,20):300
}
dict2 = {[10,20]:100} 列表是可变的,不能作为键
dict3 = {'name':'张三','name':100}
print(dict3)

​ 练习:定义一个字典,保存一条狗的信息,包括:名字、品种、颜色、年龄。

dog = {'名字':'咪咪','品种':'哈士奇','颜色':'黑白相间','年龄':'3'}
print(dog['颜色'])
2.2 元素的增删改查
   ######        1) 查 - 获取字典的值

​ 获取单个值

​ a. 字典【key】 - 获取字典中指定key对应的值(如果key不存在,会报错)

​ b. 字典.get(key) - 获取字典中指定key对应的值(如果key不存在不会报错,返回none)
​ c. 字典.get(key,默认值) - 获取字典中指定key对应的值(如果key不存在不会报错,返回默认值)

movie1 = {'name':'战狼','director':'吴京','actor':'吴京','release_time':'2015','kind':'动作/战争/军事'
}
print(movie1['name'])
print(movie1['kind'])
movie2 = {'name':'沉默的羔羊','director':'乔纳森·戴米','actor':'朱迪·福斯特、安东尼·霍普金斯、斯科特·格林','release_time':'1991','kind':'犯罪/惊悚'
}
print(movie2.get('kind'))# key不存在时不会报错
print(movie2.get('release_time','2020-01-01'))
print(movie2.get('score',1))

​ 遍历字典
​ 方法一:(推荐使用)
​ for 变量 in 字典: # 变量取到的是key
​ 循环体(变量在循环体中得到的是字典的key)

for x in movie2:print(x,':',movie2[x])

​ 方法二:
​ for key,value in 字典.items()
​ 循环体(循环体中变量1取到的所有的键,变量2取到的是所有键对应的值)

print('=========================================')
for x,y in movie2.items():print(x,':',y)
2) 增/改 - 添加键值对/修改键值对的值

​ a. 字典【key】 = 值 - 当key不存在就是添加键值对;当key存在的时候就是修改key的值。

subject = {'name':'python','score':3,'class_hour':20,'direction':['数据分析','web后端','爬虫','自动测试','自动化运维']
}
subject['teacher'] = '余婷'
print(subject)
3) 删

​ del 字典【key】 - 删除字典指定key对应的键值对
​ 字典.pop(key) - 取出字典中指定key对应的值

del subject['class_hour']
print(subject)
del_item = subject.pop('direction')
print(subject)
print(del_item)
2.3 字典的应用

​ 练习:
​ 1) 定义一个变量同时保存多条狗的信息,每条狗有:名字、年龄、性别、品种、价格和颜色。
​ 2) 统计5条狗中公的有多少条
​ 3) 打印所有价格超过2000元狗的名字

num = 0
dogs = [{'name':'二哈','age':5,'sex':'公','variety':'哈士奇','value':3000,'color':'黑白'},{'name':'杜甫','age':3,'sex':'母','variety':'金毛','value':1000,'color':'金色'},{'name':'四女','age':6,'sex':'公','variety':'泰迪','value':5000,'color':'黄色'},{'name':'大沙','age':2,'sex':'母','variety':'拉布拉多','value':1500,'color':'白色'},{'name':'窗口','age':7,'sex':'母','variety':'柯基','value':3500,'color':'黑色'},]
print('价格超过2000的狗有:',end = '')
for dog in dogs:if dog['sex'] == '公':num += 1if dog['value'] > 2000:print(dog['name'],end = ',')
print()
print('公狗的数量为:',num)
# 定义一个变量保存一个班级信息:
c = {'class_name':'python2003','class_position':'23教室','lecturer':{'name':'余婷','sex':'女','age':'18','QQ':'726550822'},'class_teacher':{'name':'杨云珂','sex':'女','age':20,'QQ':'782921821'},'students':[{'name':'曹峰','age':18,'sex':'男','tel':'15735186067'},{'name':'赵云','age':18,'sex':'男','tel':'13564656985'},]
}
# 获取讲师的QQ
print(c['lecturer']['QQ'])
print(c['students'][1]['tel'])
2.4 相关操作
   ######        1) 字典不支持加法、乘法和比较大小的运算

​ 判断是否相等

print({'a':10,'b':20} == {'b':20,'a':10})
   ######        2) is - 判断数据的地址是否相等
a = {'a':10}
b = {'a':10}
print(id(a),id(b))
print(a == b)
print(a is b)
3) in 和 not in

​ key in 字典 - 判断字典中是否有指定的key

dict1 = {'a':10,'b':20,'c':30}
print(10 in dict1)
print('b' in dict1)
4) 相关的函数:len、dict

​ len(字典) - 获取字典中键值对的个数

print(len(dict1))

​ dict(数据) - 将其他的数据转换成字典(数据的要求:1.序列,2.序列中的元素还是序列,3.内部的序列有且只有两个元素,第一个元素不可变)

list1 = ['ab',(10,20),['name','张三']]
print(dict(list1))
5) 把字典转换成其他数据
stu = {'name':'小明','age':18,'score':100}

​ a. 将字典转换成列表/元组 - 将字典的key作为列表/元组的元素

print(list(stu))
print(tuple(stu))

​ b. 将字典转换成字符串

print(str(stu))

​ c. 将字典转换成布尔

print(bool({}))
print(bool(stu))
6) 相关的方法
stu = {'name':'小明','age':18,'score':100}

​ a. 字典.clear()
​ b. 字典.copy() # 可以赋一个新的地址。
​ c. dict.fromkeys(序列,默认值 = none) - 创建一个新的字典,序列中所有的元素会作为新字典的key,默认值是所有key对应的值。

new_dict = dict.fromkeys('abc')
print(new_dict)

​ d. 字典.items()、字典.keys()、字典.values()

print(stu.items())
print(stu.keys())
print(stu.values())

​ e. 字典.setdefault(key,value) - 在字典中添加键值对(单纯的添加,不会修改)

stu.setdefault('weight',70)
print(stu)

​ f. 字典1.update(字典2) - 将字典2当中所有的键值对全部添加到字典1中。

stu.update({'a':10,'b':20})
print(stu)

python进阶day6相关推荐

  1. Python进阶之递归函数的用法及其示例

    作者 | 程序员adny 责编 | 徐威龙 封图| CSDN│下载于视觉中国 出品 |  AI科技大本营(ID:rgznai100) 本篇文章主要介绍了Python进阶之递归函数的用法及其示例,现在分 ...

  2. Python自学路线图之Python进阶

    Python自学路线图的第二个阶段是Python进阶学习,自学完后需要掌握的Python技能: 1.自学Linux操作系统,熟练使用Linux操作系统: 自学网络编程,掌握网络编程相关技术, 能够实现 ...

  3. 如果只推荐一本 Python 进阶的书,我要 Pick 它!

    作者 | 豌豆花下猫 今年二月初,我偶然看到了一条推特: <流畅的Python>一书的作者发布了一条激动人心的消息:他正在写作第二版! 如果要票选最佳的 Python 进阶类书目,这本书肯 ...

  4. 106页的《Python进阶》中文版(附下载)!

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 推荐一本对Python感兴趣的书籍<Python进阶>,是<Inter ...

  5. Python进阶6——序列操作

    1.序列的拼接和复制 Python中使用+对序列进行拼接,使用*对序列进行复制 s=str(1234) l=list(range(2,13)) print(s,l) print('---------- ...

  6. Python 进阶之路 (九) 再立Flag, 社区最全的itertools深度解析(上)

    前言 大家好,今天想和大家分享一下我的itertools学习体验及心得,itertools是一个Python的自带库,内含多种非常实用的方法,我简单学习了一下,发现可以大大提升工作效率,在sf社区内没 ...

  7. Python 进阶_生成器 生成器表达式

    目录 目录 相关知识点 生成器 生成器 fab 的执行过程 生成器和迭代器的区别 生成器的优势 加强的生成器特性 生成器表达式 生成器表达式样例 小结 相关知识点 Python 进阶_迭代器 & ...

  8. python进阶书籍推荐-豆瓣评分9.4!年度最值得推荐的Python进阶书

    原标题:豆瓣评分9.4!年度最值得推荐的Python进阶书 来自:程序员书库(ID:OpenSourceTop) 编译 链接:https://whatpixel.com/fluent-python-b ...

  9. Python 进阶之路 (十二) 尾声即是开始

    Python进阶之路总结 大家好,我的<< Python进阶之路>>到这一期就到此为止了,和 <<Python 基础起步>>不同,在掌握了一些基础知识后 ...

最新文章

  1. Typescript-规范
  2. C++ STL的妙用
  3. ROS2学习(八).ROS概念 - ROS 2接口(Ros2 interface)
  4. 2018 Machine Learning
  5. 趣文:有趣的 Linux 命令
  6. Oracle 20c 新特性:DIAGNOSTICS_CONTROL 对诊断事件的安全管控
  7. 无心剑英译林清玄《永恒》
  8. 声明式智能推荐系统应用架构探索
  9. Linux中的mate程序的进程,终端下以后台模式运行Linux程序的过程详解
  10. spring学习--bean--普通bean与工厂bean(FactoryBean)区别
  11. Vegas中的色彩校正怎么用?
  12. IT部门域事件与业务分析
  13. SATA 与 PCIe
  14. mysql数据库的单引号用法_数据库SQL语句单引号、双引号的用法
  15. PhotoShop 保存 8 bit 位图(Bmp)的方法【记录备忘】
  16. 小型酒店管理系统(Vue+SpringBoot)(持续更新)
  17. java报表是什么_什么是报表工具
  18. 120篇精华文章打包送,干货慎入!
  19. 2023年软考报哪门比较好?
  20. 高级 JavaScript Day04 | 正则表达式

热门文章

  1. WIN7下弹出应用程序兼容性助手解决
  2. 计算机趣事 英语作文,英语作文100字趣事
  3. HTML 小练习(智联注册页)
  4. HMI-47-【多媒体】Title界面实现 2
  5. 我买了一辆奥迪,然后……
  6. codeforces 581B Luxurious Houses(线段树点更新,区间查询)
  7. 变电所无人值守系统的优点
  8. java操控手机刷锦鲤看看(一个类似头条的赚钱app)
  9. 单例模式 ,多例模式及工厂设计模式的简单案例介绍
  10. 三个牛人教你怎么高效阅读论文