Python第三讲
今日内容概要
数据类型及内置方法
字符编码
文件处理
函数简介
今日内容详细
数据类型及内置方法
列表
name_list =['jason','oscar','tony','kevin']
1.索引取值
print(name_list[0]) # jason
print(name_list[0:3]) # ['jason', 'oscar', 'tony']
print(name_list[0:3:2]) # ['jason', 'tony']
print(name_list[-1]) # kevin
2.长度
print(len(name_list)) # 4 列表内元素的个数
3.添加元素
name_list.append('jerry') # 尾部追加
print(name_list)
name_list.insert(0,'666') # ['666', 'jason', 'oscar', 'tony', 'kevin']
print(name_list) # 在指定的索引位置添加数据
name_list.extend([111,222,333,444])
print(name_list)
"""
extend等价于
for循环加append
for i in [111,222,333,444]:
name_list.append(i)
"""
4 修改元素
name_list[0] = 'jason666'
print(name_list)
5 移除元素
del name_list[0]
print(name_list) # ['oscar', 'tony', 'kevin']
res = name_list.remove('kevin')
print(name_list,res) # ['jason', 'oscar', 'tony'] None
name_list.pop()
print(name_list) # ['jason', 'oscar', 'tony']
res = name_list.pop(1)
print(name_list,res) # ['jason', 'tony', 'kevin'] oscar
6 统计元素出现的个数
l1 = [111,222,333,222,111,222,333,333,333,333]
print(l1.count(333)) # 5
7 类型
但凡能被for循环遍历的数据类型都可以传给list()转换成列表类型
list()会跟for循环一样遍历出数据类型中包含的每一个元素然后放到列表中
list('wdad') # 结果:['w', 'd', 'a', 'd']
list([1,2,3]) # 结果:[1, 2, 3]
list({"name":"jason","age":18}) #结果:['name', 'age']
list((1,2,3)) # 结果:[1, 2, 3]
list({1,2,3,4}) # 结果:[1, 2, 3, 4]
8 排序
l1 = [222,333,444,111,999,666,888]
l1.sort()
print(l1) # [111, 222, 333, 444, 666, 888, 999]
元组
由于元组内的元素是不能被修改的,所以元组的内置方法非常的少
"""
如何查看每一个数据类型都包含哪些内置方法呢?
用数据类型加点号 然后pycharm会给你自动提示出所有的内置方法
"""
t = (111,222,333,444,555,111,111,111,111)
print(t[0]) # 111
print(t[0:4]) # (111, 222, 333, 444)
print(t[0:4:2]) # (111, 333)
print(t[-1]) # 555
print(t.count(111)) # 5
print(t.index(222)) # 1 返回的是index括号内元素所在的索引值
print(t.index(111)) # 0 返回的是index括号内元素所在的索引值
print(t.index(111,1,6)) # 5 返回的是index括号内元素所在的索引值
字典
user_info = {'username':'jason','password':123}
1 字典内元素是无序的 所以字典不支持索引取值
print(user_info['username']) # jason
print(user_info['xxx']) # 不推荐使用 键不存在直接报错
print(user_info.get('password')) # 123
print(user_info.get('xxx')) # None
2 修改值
user_info['username'] = 'tony'
print(user_info) # {'username': 'tony', 'password': 123}
3 添加键值
user_info['hobby'] = 'read' # 重新创建的新的键值对
print(user_info) # {'username': 'jason', 'password': 123, 'hobby': 'read'}
4 三剑客
print(user_info.items()) # dict_items([('username', 'jason'), ('password', 123)])
print(user_info.keys()) # dict_keys(['username', 'password'])
print(user_info.values()) # dict_values(['jason', 123])
5 长度
print(len(user_info)) # 2 键值对的个数
6 更新 用新字典更新旧字典, 有则修改,无则添加
dic= {'k1':'jason','k2':'Tony','k3':'JY'}
dic.update({'k1':'JN','k4':'xxx'})
print(dic) # {'k1': 'JN', 'k2': 'Tony', 'k3': 'JY', 'k4': 'xxx'}
集合
"""
定义:在{}内用逗号分隔开多个元素,集合具备以下三个特点:
1:每个元素必须是不可变类型(整型 浮点型 字符串)
2:集合内没有重复的元素
3:集合内元素无序(不能用索引取值)
"""
s = {1,2,3,4} # 本质 s = set({1,2,3,4})
# 注意1:列表类型是索引对应值,字典是key对应值,均可以取得单个指定的值,而集合类型既没有索引也没有key与值对应,所以无法取得单个的值,而且对于集合来说,主要用于去重与关系元素,根本没有取出单个指定值这种需求。
# 注意2:{}既可以用于定义dict,也可以用于定义集合,但是字典内的元素必须是key:value的格式,现在我们想定义一个空字典和空集合,该如何准确去定义两者?
d = {} # 默认是空字典
s = set() # 这才是定义空集合
d = {}
s = {}
s1 = set()
print(type(d),type(s)) # <class 'dict'> <class 'dict'>
s = {1,1,1,1,1,1,1,1,2,2,2,3,4,3,4,5,6,7,8}
# print(s)
l = ['jason','jason','jerry','tom','jason']
# 将列表转成集合
s = set(l)
print(s) # {'jason', 'jerry', 'tom'}
关系运算
'''共同好友、共同关注、共同点赞'''
friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们
friends2 = {"Jy","ricky","jason","egon"} # 用户2的好友们
1.合集(|):求两个用户所有的好友(重复好友只留一个)
res = friends1 | friends2
print(res) # {'zero', 'kevin', 'egon', 'jason', 'Jy', 'ricky'}
2.交集(&):求两个用户的共同好友
res1 = friends1 & friends2
print(res1) # {'egon', 'jason'}
3.差集(-):
res2 = friends1 - friends2 # 求用户1独有的好友
res3 = friends2 - friends1 # 求用户2独有的好友
4.对称差集(^) # 求两个用户独有的好友们(即去掉共有的好友)
res4 = friends1 ^ friends2
{'kevin', 'zero', 'ricky', 'Jy'}
5.值是否相等(==)
>>> friends1 == friends2
False
6.父集:一个集合是否包含另外一个集合
6.1 包含则返回True
>>> {1,2,3} > {1,2}
True
>>> {1,2,3} >= {1,2}
True
6.2 不存在包含关系,则返回True
>>> {1,2,3} > {1,3,4,5}
False
>>> {1,2,3} >= {1,3,4,5}
False
7.子集
>>> {1,2} < {1,2,3}
True
>>> {1,2} <= {1,2,3}
True
可变类型与不可变类型
可变类型
值改变内存地址不变
列表
不可变类型
值改变内存地址也改变
字符串
字符编码
"""
前提准备知识点
1.计算机只能识别二进制数据
2.三大核心硬件
#1.软件运行前,软件的代码及其相关数据都是存放于硬盘中的
#2.任何软件的启动都是将数据从硬盘中读入内存,然后CPU从内存中取出指令并执行
#3.软件运行过程中产生的数据最先都是存放于内存中的(******),若想永久保存软件产生的数据,则需要将数据由内存写入硬盘
3.文本编辑器和Python解释器的异同点
文本编辑器
#阶段1 启动一个文本编辑器(文本编辑器如nodepad++,pycharm,word)
#阶段2、文本编辑器会将文件内容从硬盘读入内存
#阶段3、文本编辑器会将刚刚读入内存中的内容显示到屏幕上
Python解释器
#阶段1
"""
人类的字符 转换 计算机的二进制
转换的过程必须参考一个固定的标准
这个标准我们称之为"字符编码表"
字符编码发展史
1.一家独大
计算机是美国发明的
所以他们需要计算机能够读懂英文字符
英文字符 字符编码表 数字的对应关系
ASCII码表
里面记录了英文字符跟数字的对象关系
用8个比特位即一个bytes(字节)来存储
2的8次方足够表示所有的英文字符
2.群雄割据
中国人
自己发明了一套编码表 GBK码
GBK编码表
中文字符、英文字符跟数字的对应关系
用16个比特位即2个字节来存储中文 英文还是用一个bytes 65535有时候针对生僻字还是无法存储(3bytes\4bytes来存储)
日本人
自己发明一套编码表 shift_jis码
shift_jis码表
日文、英文跟数字的对应关系
韩国人
自己发明一套编码表 Euc_kr码
Euc_kr码表
韩文、英文跟数字的对应关系
不同的国家之间数据无法做到无障碍交流 会出现乱码的情况
3.天下一统
统一的编码 能够识别全世界所有的字符
Unicode万国码表
统一用2个字节存储
英文也用2个字节
中文也用2个字节(不够则再加更多位)
utf-8是Unicode的转换版本
英文是用一个字节
中文是用三个字节
现在内存依旧使用Unicode,硬盘使用utf-8
要想保住不乱码的核心就是文件用什么编码存的就用什么编码取!!
python2和Python3
unicode是1994年才发明出来的
Python2.7默认使用的是编码是ASCII码(Unicode还没有问世)
Python3.X默认使用的编码是Utf-8码
文件头
encoding:utf8
在你的py文件开头用注释写了一句上面的代码,无论是哪一种编码由于都支持英文所以都能读懂上面的文字
告诉编辑器采用文件头采用文件头指定的编码读取接下来的文件内容
小u前缀
encoding:utf8
res = U'你好啊 感觉下午比上午有精神'
编码与解码
res = '你好啊 感觉下午比上午有精神'
r = res.encode('utf-8')
print(r,type(r)) #bytes类型 在Python中bytes类型的数据 你可以直接看成是二进制数据
"""
数据基于网络传输 必须是二进制格式才可以!!
"""
编码:将人类能够读懂的字符按照指定的编码表编码成计算机能够识别的数据
解码:将晋级赛读懂的数据按照指定的编码表解码成人类能够读懂的数据
文件处理
什么是文件?
文件是用来存数据并且应该是长久存储数据的
双击一个文件
从硬盘中读取文件
在打开的文件上写字然后保存
将内存中的数据刷到硬盘
文件其实就是操作系统暴露给用户可以简单方便的操作计算机硬盘的工具
利用Python代码来操作文件
文件操作的基本流程
open('a.txt(文件路径)','r',encoding = 'utf-8')
res = file.read()
print(res)
file.close() # 告诉操作系统关闭文件资源
with上下文管理(推荐使用)
with open('a.txt','r',encoding='utf-8') as file:
res = file.read()
print(res) # 当with里面的缩进代码执行完毕之后会自动调用close
HTML 6733 字节 699 单词 312 行
Python第三讲的更多相关文章
- 小甲鱼Python第三讲课后习题
0.以下哪个变量的命名不正确?为什么? A:MM_520 B:_MM520_ C:520_MM D:_520MM 变量 命名:以字母.下划线.数字组成,以字母.下划线开头 1.除了使用反斜杠(\)进行 ...
- python学习第三讲,python基础语法之注释,算数运算符,变量.
目录 python学习第三讲,python基础语法之注释,算数运算符,变量. 一丶python中的基础语法,注释,算数运算符,变量 1.python中的注释 2.python中的运算符. 3.pyth ...
- Python解答力扣网站题库简单版----第三讲
1041. 困于环中的机器人 题库链接: 1041. 困于环中的机器人. 题干 在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方.机器人可以接受下列三条指令之一: "G" ...
- 【虫师讲Selenium+Python】第三讲:操作测试对象
一.首先呢,选择一个编辑器,我们这里选择的是Sublime Text >Ctrl+B为运行当前脚本的快捷方式 二.编写代码 #coding==utf-8 from selenium import ...
- 人工智能进度好慢,呜呜呜 还是先来学python!!!!!!!二十三讲、二十四讲!
0:十转2 def my_bin(x): a ='' if x : a = my_bin(x//2) return a+str(x%2) else: a+='0b' return a print(my ...
- Python金融应用编程(数据分析、定价与量化投资)
近年来,金融领域的量化分析越来越受到理论界与实务界的重视,量化分析的技术也取得了较大的进展,成为备受关注的一个热点领域.所谓金融量化,就是将金融分析理论与计算机编程技术相结合,更为有效的利用现代计算技 ...
- NLP︱高级词向量表达(一)——GloVe(理论、相关测评结果、R&python实现、相关应用)
有很多改进版的word2vec,但是目前还是word2vec最流行,但是Glove也有很多在提及,笔者在自己实验的时候,发现Glove也还是有很多优点以及可以深入研究对比的地方的,所以对其进行了一定的 ...
- Python十讲
第一讲:从零开始学Python 第二讲:变量和基础数据类型 第三讲:条件分支以及循环 第四讲:列表与元组 第五讲:字典 第六讲:函数 第七讲:类 第八讲:标准库 第九讲:异常 第十讲:文件处理
- python绘图之seaborn 笔记
前段时间学习了梁斌老师的数据分析(升级版)第三讲<探索性数据分析及数据可视化>,由于之前一直比较忙没有来得及总结,趁今天是周末有点闲暇时间,整理一下笔记: 什么是seaborn Seabo ...
随机推荐
- linux不使用useradd添加新用户
不使用useradd创建新的用户 1.进入用户特征信息:/etc/passwd 编辑: vim /etc/passwd 命令模式 :G 进入末行 进入编辑模式 :在最后添加新用户信息: 例:new_u ...
- [luoguP4139]上帝与集合的正确用法
\(\text{Description}\) \(\text{Given a number }p(p\leqslant10^7).\) \(\text{Output }2^{2^{2^{2^{\cdo ...
- uniapp 使用iconfont图标
步骤一 新建项目 步骤二 导入需要的图标,然后下载图标代码 步骤三 打开下载的压缩文件中的iconfont.css 步骤四 复制粘贴到项目中 步骤四在项目中使用 use in page
- DbUnit入门实战
原文地址: http://yangzb.iteye.com/blog/947292 相信做过单元测试的人都会对JUnit 非常的熟悉了, 今天要介绍的DbUnit(http://dbunit.sour ...
- ASP.NET Core 6框架揭秘实例演示[01]: 编程初体验
作为<ASP.NET Core 3框架揭秘>的升级版,<ASP.NET Core 6框架揭秘>提供了很多新的章节,同时对现有的内容进行大量的修改.虽然本书旨在对ASP.NET ...
- MyBatis加强(4)~mybatis 插件开发
一.插件介绍[动态代理] 1.插件[动态代理]:mybatis 允许在已经映射的语句的执行过程的某个时机进行拦截增强的机制. 2.mybatis中的组件动态代理的运用: MyBatis 在四大组件对象 ...
- Lesson17——NumPy 统计函数
NumPy 教程目录 1 NumPy 统计函数 NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等. 函数说明如下 1.1 统计 method descripti ...
- Ubuntu20.04.3中telnet 127.0.0.1时Unable to connect to remote host: Connection refused
本博客旨在自我学习使用,如有任何疑问请及时联系博主 今天遇到个稀奇古怪的问题: 调试emqx的时候一直econnrefused,检查服务时,突然发现在ubuntu上telnet localhost竟然 ...
- c++ 聚合/POD/平凡/标准布局 介绍
目录 前言 聚合 POD(Plain Old Data) 平凡类型(TrivialType) 要求 平凡可复制(TrivialCopyable) 要求 对于某些函数的补充说明 平凡拷贝构造函数 符合条 ...
- HTTP流量神器Goreplay核心源码详解
摘要:Goreplay 前称是 Gor,一个简单的 TCP/HTTP 流量录制及重放的工具,主要用 Go 语言编写. 本文分享自华为云社区<流量回放工具之 goreplay 核心源码分析> ...