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 ...
随机推荐
- Photoshop如何快速扣取图标
由于图标往往与背景色区别很大,因此首先使用魔棒工具快速选择出图标 有时候选择出来是图标,有时候是背景色 可以通过选择反向来调节(右键即可) ctrl + J 提取出选择的区域 这时进行等分裁剪即可 点 ...
- APC 篇—— APC 执行
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
- 「CTSC 2011」排列
「CTSC 2011」排列 要求不存在公差为 A 或者公比为 B 的子列,那么实际上可以把该问题转化为求一个图的最优拓朴序. 任意差为 A 或者比为 B 的两个数连一条边. 求一个合法序列的答案可以用 ...
- 长时间不操作Navicat或Putty会断线?
问题描述 今天发现只要一直不使用Putty,发现就会"卡住",还有Navicat连接数据库也有类似问题. 问题分析 Linux或者数据库都想节省连接资源呗. 问题解决 那就隔一段时 ...
- JAVA多线程学习- 三:volatile关键字
Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字. volatile,从字面上说是易变的.不稳定的,事实上,也确实如此,这个 ...
- errorC2471:cannot update program database vc90.pdb
解决办法: C/C++ | General | Debug Information format | C7 Compatible (/Z7) C/C++ | Code Generation | Ena ...
- IIS 配置相应的文件下载
转载请注明来源:https://www.cnblogs.com/hookjc/ 1.设置MIME,让IIS支持更多文件类型下载 比如添加支持.exe文件下载 打开IIS,选中服务器,点右键,属性里有M ...
- autorelease注意事项
1.autorelease使用注意 并不是放到自动释放池代码中,都会自动加入到自动释放池 @autoreleasepool { // 因为没有调用 autorelease 方法,所以对象没有加入到自动 ...
- 自定义UITableview自带侧滑删除按钮样式 by 徐
效果如下: 实现原理: 1.打开tableview自带的侧滑删除功能 核心代码: 1 -(void)tableView:(UITableView *)tableView commitEditingSt ...
- .netcore基础知识(一)
先来说说web服务器 先来一张图 一个典型的进程外托管模型 我们先看kestrel这一部分 我们在它前面放了一个方向代理服务器nginx 对http请求做预处理 kestrel本身是可以直接用作we ...