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 ...
随机推荐
- 多选菜单shell脚本
有 很多方法 可以读取Bash脚本中的用户输入. 但是,允许用户键入输入会带来一些问题. 主要问题是输入验证,您必须在其中考虑所有可能的输入. 解决此问题的一种简单方法是为Bash脚本创建一个多选菜单 ...
- kubernetes之node 宕机,pod驱离问题解决
背景: 当node宕机时,希望该node节点上的pod能够快速疏散到其他节点,并提供服务.测试发现,要等待5分钟,上面的pod才会疏散. 网上介绍通过修改 /etc/kubernetes/manife ...
- python网络爬虫-静态网页抓取(四)
静态网页抓取 在网站设计中,纯HTML格式的网页通常被称之为静态网页,在网络爬虫中静态网页的数据比较容易抓取,因为说有的数据都呈现在网页的HTML代码中.相对而言使用Ajax动态加载的玩个的数据不一定 ...
- 「CTSC 2011」幸福路径
[「CTSC 2011」幸福路径 蚂蚁是可以无限走下去的,但是题目对于精度是有限定的,只要满足精度就行了. \({(1-1e-6)}^{2^{25}}=2.6e-15\) 考虑使用倍增的思想. 定义\ ...
- AT2645 [ARC076D] Exhausted?
解法一 引理:令一个二分图两部分别为 \(X, Y(|X| \le |Y|)\),若其存在完美匹配当且仅当 \(\forall S \subseteq X, f(S) \ge |S|\)(其中 \(f ...
- attachEvent
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Mac 使用自带php和Apache 安装配置Xdebug 开启本地调试模式
Mac 安装配置php xdebug 本地调试 0.原理图 https://paper.seebug.org/308/ 测试demo构建方法 新建空白项目,目录选择Apache默认项目目录 1.下载x ...
- iOS中JavaScript和OC交互 --by 胡 xu
在iOS开发中很多时候我们会和UIWebView打交道,目前国内的很多应用都采用了UIWebView的混合编程技术,最常见的是微信公众号的内容页面.前段时间在做微信公众平台相关的开发,发现很多应用场景 ...
- nginx负载均衡中常见的算法及原理有哪些?
一.nginx负载均衡常用算法 1.1 轮询 轮询,nginx默认方式.一次将请求分配给各个后台服务器. upstream backserver { server 10.0.0.7; server 1 ...
- Git修改提交历史中的作者及邮箱信息
一.使用rebase 如图,红圈中提交的用户名及邮箱是需要改的,则需要复制需要改的提交记录的上一个记录hashcode,在本例中就是a0a891a48f92b51201042fccbe61ed1264 ...