路飞学城-Python开发集训-第2章
学习心得:
这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感觉看到了一点光明,哈哈!
笔记:
print(bin(343)) #0b101010111 返回整数的二进制表示
python2默认支持的编码是ASCII
python3默认支持的编码是UTF8
科学计数法:
print(1.2395e8) #123950000.0 e8代表10的8次方,这个e换成大E也是OK的
浮点数:

浮点精确度问题:
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有四舍五入的误差。
python默认的17位精度,也就是小数点后16位,尽管有16位,但是这个精确度却是越往后越不准的。
如果想要使用更精确的浮点数就可引入decimal模块的“getcontext”和“decimal”方法。
列表操作:
li=['python','PHP',888,'java','abc',888,'python','alex']
li.insert(1,666)
print(li) #['python', 666, 'PHP', 888, 'java', 'abc', 888, 'python', 'alex'] num=li.index("PHP")
print(num) # num=li.count("python")
print(num) # n=li[-4:-1] #切片括号里面的数字从小到大
print(n) #['abc', 888, 'python'] li.remove(888) #如果有重复,删除的是从左面数的第一个,括号内必须要有参数,pop可以没有参数
print(li) #['python', 'PHP', 'java', 'abc', 888, 'python', 'alex'] n=li.pop() #不加索引,删除的是最后一个,并将删除的元素返回
n2=li.pop(0) #删除指定索引元素
print(n) #alex
print(n2) #python
print(li) #['PHP', 'java', 'abc', 888, 'python'] #sort()方法是对列表本身做排序,里面可以加一个reverse参数 li.clear() #清空列表
print(li) #[]
range() 方法得到的也是一个列表。
列表中的每一个元素都对应着一个内存地址,用id()方法看内存地址。
列表-练习题
1.创建一个空列表,命名为names,往里面添加old_driver,rain,jack,shanshan,peiqi,black_girl 元素 2.往names列表里black_girl前面插入一个alex 3.把shanshan的名字改成中文,姗姗 4.往names列表里rain的后面插入一个子列表,[oldboy, oldgirl] 5.返回peiqi的索引值 6.创建新列表[1,2,3,4,2,5,6,2],合并入names列表 7.取出names列表中索引4-7的元素 8.取出names列表中索引2-10的元素,步长为2 9.取出names列表中最后3个元素 10.循环names列表,打印每个元素的索引值,和元素 11.循环names列表,打印每个元素的索引值,和元素,当索引值 为偶数时,把对应的元素改成-1 12.names里有3个2,请返回第2个2的索引值。不要人肉数,要动态找(提示,找到第一个2的位置,在此基础上再找第2个) 13.现有商品列表如下: products = [ ['Iphone8',6888],['MacPro',14800], ['小米6',2499],['Coffee',31],['Book',80],['Nike Shoes',799] ] 需打印出这样的格式: ---------商品列表---------- 0. Iphone8 6888 1. MacPro 14800 2. 小米6 2499 3. Coffee 31 4. Book 80 5. Nike Shoes 799 14. 写一个循环,不断的问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里, 最终用户输入q退出时,打印购物车里的商品列表
解题:
字符串操作:
s="my name is alex"
s1=s.capitalize() #首字母大写
print(s1) #My name is alex s2=s.title() #标题就是所有字母第一个字符都大写
print(s2) #My Name Is Alex s3=s.rjust(50) #50为包括字符串在内的总长度,不加填充符默认填充空格
print(s3) #" my name is alex"
s3=s.rjust(50,"*")
print(s3) #***********************************my name is alex s4=s.ljust(50,"-")
print(s4) #my name is alex----------------------------------- s5=s.center(50) #默认填充的也是空格,长度也中包含字符串的总长度
print(s5) #" my name is alex "
print(len(s5)) print(s.isidentifier()) #False,判断是不是一个合法的变量名 s.split() #按空格或其它字符将字符串分开,并以列表的形式返回
s.splitlines() #按行将字符串分开,并以列表的形式返回 #总结:字符串不像列表,列表的方法是直接对列表本身操作,而字符串的方法不对本身操作,使用后自身不变,需要将结果赋给一个变量
字符串格式化的另一种操作:
s3="my name is {0},i am {1} years old"
s3.format("alex",22)
s3="my name is {name},i am {age} years old"
s3.format(name="alex",age=22)
哈希函数:hash()
可哈希的一定是不可变数据类型,可变数据类型不可哈希。
不可变数据类型:数字、字符串、元组
可变数据类型:列表、字典
思考:之所以字符串使用方法后自身不变,就是因为字符串是不可变类型,列表使用方法后自身改变,也是同样的道理。
字典:
key-value结构
key必须可哈希,且必须为不可变数据类型,必须唯一
可存放任意多个值、可修改、可以不唯一
无序
查找速度快
dic= {"name":"alex","age":18,"sex":"male","hobby":"baskeball"}
#获取值有两种方式,get在键不存在的时候返回None,而后一种会报错,为了减少报错,用get
print(dic.get("name")) #alex
print(dic.get("add")) #None
print(dic["name"]) #alex
print(dic["add"]) #报错,KeyError: 'add'
#判断键是否在字典中
print("name" in dic) #True
dic.pop("name") #括号里面必须要有参数
print(dic)
dic.popitem() #随机删除一个
print(dic)
a=dic.keys() #获取字典的键
print(a) #dict_keys(['age', 'name', 'hobby', 'sex'])
# print(a[0]) #TypeError: 'dict_keys' object does not support indexing,这个值不是一个列表,不能被查询
b=dic.values()
print(b) #dict_values(['male', 'baskeball', 18, 'alex'])
c=dic.items()
print(c) #dict_items([('hobby', 'baskeball'), ('sex', 'male'), ('age', 18), ('name', 'alex')])
dic.setdefault("age","") #增键值对,如果存在,则不更新,不存在,则更新
print(dic) #{'age': 18, 'hobby': 'baskeball', 'sex': 'male', 'name': 'alex'}
dic.setdefault("add","beijing")
print(dic) #{'add': 'beijing', 'age': 18, 'hobby': 'baskeball', 'sex': 'male', 'name': 'alex'}
print(dic.fromkeys(["a","b","c"])) #{'a': None, 'b': None, 'c': None},创建一个新的字典,而不是更改之前的字典
print(dic) #{'age': 18, 'hobby': 'baskeball', 'add': 'beijing', 'sex': 'male', 'name': 'alex'}
dic2={"add":"beijing","department":"IT","age":30}
dic.update(dic2) #合并两个字典,如果存在相同的,则更新
print(dic) #{'hobby': 'baskeball', 'department': 'IT', 'age': 30, 'sex': 'male', 'name': 'alex', 'add': 'beijing'}
集合:
集合是一个无序的、不重复的数据组合,它的主要作用如下:
(1)去重,把一个列表变成集合就自动去重了
(2)关系测试,测试两组数据之前的交集、差集、并集等关系
集合操作:
s={} #如果是空的,就是字典,如果里面有值且是非键值对的形式,就是集合
s1={1,2} #创建集合
name={"alex","wupeiqi","龙婷","姗姗"}
name.pop() #随机删除一个元素,括号内不能加参数
print(name) #{'龙婷', '姗姗', 'alex'}
# name.remove("alex")
# print(name)
# name.remove("alex") #KeyError: 'alex'
# name.discard("alex")
#小结:remove和discard都是删除一个元素,区别是remove中的参数如果不存在会报错,而discard不会
set2={233,"python"}
name.update(set2) #将两个集体合并
print(name) #{'wupeiqi', 233, 'alex', '姗姗', 'python'}
name.update('ops') #将括号中的对象当成一个序列,将序列中的每个元素分别添加到集合
name.update([12,'eee']) #update添加多少元素
set2.add(888)
print(set2) #{888, 'python', 233}
set1={[111],"alex"} #TypeError: unhashable type: 'list'
集合小特性:
集合的元素必须是一个可哈希的值,所以列表、字典、集合(可变集合)都不能做为集合的元素。因为这个特性,所以集合中的元素可以做为字典的键。
set1={[111],"alex"} #TypeError: unhashable type: 'list'
相似方法总结:

路飞学城-Python开发集训-第2章的更多相关文章
- 路飞学城-Python开发集训-第1章
学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...
- 路飞学城-Python开发集训-第3章
学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...
- 路飞学城-Python开发集训-第4章
学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...
- 路飞学城-Python开发集训-第5章
面向过程:核心是过程二字,过程是解决问题的步骤,相当于设计一条流水线,是机械式的思维方式 优点:复杂的问题流程化,进而简单化 缺点:可扩展性差 面向对象:核心是对象二字,对象就是特征与技能的结合体. ...
- 路飞学城-Python爬虫集训-第三章
这个爬虫集训课第三章的作业讲得是Scrapy 课程主要是使用Scrapy + Redis实现分布式爬虫 惯例贴一下作业: Python爬虫可以使用Requests库来进行简单爬虫的编写,但是Reque ...
- 路飞学城-Python开发-第一章
# 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...
- 路飞学城-Python爬虫集训-第一章
自学Python的时候看了不少老男孩的视频,一直欠老男孩一个会员,现在99元爬虫集训果断参与. 非常喜欢Alex和武Sir的课,技术能力超强,当然讲着讲着就开起车来也说明他俩开车的技术也超级强! 以上 ...
- 路飞学城-Python爬虫集训-第二章
本次爬虫集训的第二次作业是web微信. 先贴一下任务: 作业中使用到了Flask. Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模 ...
- 路飞学城-Python开发-第二章
''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...
随机推荐
- JavaScript有这几种测试分类
译者按: 也许你讨厌测试,但是你不得不面对它,所以至少区分一下单元测试.集成测试与功能测试?对吧… 原文: What are Unit Testing, Integration Testing and ...
- WORLD 快速线
1,3个“-” 一条直线 2,3个“=” 一条双直线 3,3个“*” 一条虚线 4,3个“~” 一条波浪线 5, 3个“#” 一条隔行线
- Swap file ".BranchModel.class.php.swp" already exists!
在 Linux 下的 vim 编辑过程中,由于某种原因异常退出正在编辑的文件,再次编辑该文件时,会出现如下提示: 1.解决方法:直接 ll -a -a 列出目录下的所有文件,包括以 . 开头的隐含文件 ...
- 从项目需求角度,使用纯CSS方案解决垂直居中
CSS是HTML元素的剪刀手,它极度的丰富了web页面的修饰.在众多CSS常见的样式需求中,有一奇葩式的存在[垂直居中],因为不管是从逻辑实现方面还是从正常需求量来讲,这都没理由让这个需求在实践过程中 ...
- iTools(pro)下载
http://bbs.feng.com/forum.php?mod=viewthread&tid=10225990&page=1&extra=#pid157941878 htt ...
- Maven和Solr简单总结
一.1.Maven介绍 Maven是一个项目管理工具,Maven通过POM项目对象模型,对象项目进行管理,通过一个配置文件(xml文件)进行项目的管理.对象项目的声明周期中每个阶段进行管理(清理,编译 ...
- 钉钉扫码登录web网站
钉钉扫码登录网站 前言 由于本公司前后台分离,这里主要讲述后台的实现逻辑与过程,前端相关的一略而过.前端我们采用的是把二维码内嵌到我们的网页中. 流程如下: 1.登录钉钉后台创建一个企业应用 2.根 ...
- SSL里的certificate格式资料小结
在查看相关报文的时候,发现RFC5246本身并没有对certificate的格式AlgorithmIdentifier作深入的介绍,只说其格式必须是X509v3 DER表示,思虑良久才找到方向:后者的 ...
- ERROR 1050 (42S01): Table xxx already exists
今天遇到一个关于MySQL求助的问题,修改表结构时遇到"ERROR 1050 (42S01): table xxx already exits" mysql> ALTER ...
- [转载]Windows 2003 R2 SP2 VOL 企业版(简体中文)
Windows 2003 R2 SP2 VOL 企业版(简体中文) 要是这个的话,分享个电驴的下载连接吧(可以复制后用快车和迅雷直接下)32位版CD1:SHA1值:d0dd2782e9387328eb ...