最常用的两个python标准库

sys(打印环境变量)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:liyananimport sysprint(sys.path)输出
['D:\\[4]python\\untitled\\day2', 'D:\\[4]python\\untitled', 'C:\\Python36\\python36.zip', 'C:\\Python36\\DLLs', 'C:\\Python36\\lib', 'C:\\Python36', 'C:\\Python36\\lib\\site-packages']

os(与系统命令相关的)

import oscmd_res = os.popen("dir").read()   打印当前的目录
print(cmd_res)
os.mkdir("new dir")
输出为创建了一个名为new dir的目录

.pyc是什么

1Python到底是什么

其实Python和Java/C#一样,也是一门基于虚拟机的语言,我们先来从表面上简单地了解一下Python程序的运行过程吧。

当我们在命令行中输入python hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你要开始工作了。可是在“解释”之前,其实执行的第一项工作和Java一样,是编译。

熟悉Java的同学可以想一下我们在命令行中如何执行一个Java的程序:

javac hello.java

java hello

只是我们在用Eclipse之类的IDE时,将这两部给融合成了一部而已。其实Python也一样,当我们执行python hello.py时,他也一样执行了这么一个过程,所以我们应该这样来描述Python,Python是一门先编译后解释的语言。

2简述Python的运行过程

在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

数据运算

算数运算

比较运算

赋值运算

逻辑运算

成员运算

身份运算

位运算(重要)

例子

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:liyanana = 50 # 50 = 00110010
b = 8  # 8 = 00001000
c = 0c = a & b; # 00000000
print (c)
c = a | b; # 00111010
print(c)
c = a ^ b; # 00111010 相同为0,不同为1
print(c)
c = ~a; #11001101 256-51
print(c)
c = a << 2; #11001000
print(c)
c = a >> 2; #00001100
print(c)
输出
0
58
58
-51
200
12

bytes类型

Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。bytes和str的转换。

例子:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:liyananmsg = "爱老虎油"
print(msg)
print(msg.encode(encoding='utf-8'))
print(msg.encode(encoding='utf-8').decode())
输出
爱老虎油
b'\xe7\x88\xb1\xe8\x80\x81\xe8\x99\x8e\xe6\xb2\xb9'
爱老虎油

列表

列表的定义

names = ["wangchao","mahan","zhanglong","zhaohu"]

访问列表元素

print(names[0]) #取第一个
输出
wangchao
print(names[-1]) #取最后一个
输出
zhaohu

切片:取多个元素

names = ["wangchao","mahan","zhanglong","zhaohu","zhangsan","lisi"]
print(names[1:4])#取第二到第五个元素
['mahan', 'zhanglong', 'zhaohu']
print(names[1:-1])#取第二到倒数第二个元素,没有-1最后一个。
['mahan', 'zhanglong', 'zhaohu', 'zhangsan']
print(names[:3])#取前三个,0可以不写
['wangchao', 'mahan', 'zhanglong']
print(names[2:])#从第三个到最后一个,不能写-1
['zhanglong', 'zhaohu', 'zhangsan', 'lisi']
print(names[::2])#从0开始到结束,每隔2个取一下
['wangchao', 'zhanglong', 'zhangsan']

追加

names.append("我是小弟")
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan', 'lisi', '我是小弟']

插入

names.insert(2,"强行插入")#在第三个元素前插入
['wangchao', 'mahan', '强行插入', 'zhanglong', 'zhaohu', 'zhangsan', 'lisi', '我是小弟']

修改

names[2]="换个新人"#第三个元素修改
['wangchao', 'mahan', '换个新人', 'zhanglong', 'zhaohu', 'zhangsan', 'lisi', '我是小弟']

删除

del names[2]#删除第三个
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan', 'lisi', '我是小弟']
names.remove("lisi")#删除指定元素
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan', '我是小弟']
names.pop()#删除最后一个
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan']

扩展

print(names)
b = [1,2,3]
names.extend(b)
print(names)     #扩展列表b进去
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan', 'lisi', '我是小弟']
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan', 'lisi', '我是小弟', 1, 2, 3]

拷贝

names = ["wangchao","mahan","zhanglong","zhaohu","zhangsan",["alex","jack"],"lisi"]
names2 = names.copy()#拷贝
print(names)
print(names2)
names[2]="马汉"
names[5][0]="李杰"
print(names)
print(names2)
输出
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan', ['alex', 'jack'], 'lisi']
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan', ['alex', 'jack'], 'lisi']
['wangchao', 'mahan', '马汉', 'zhaohu', 'zhangsan', ['李杰', 'jack'], 'lisi']
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan', ['李杰', 'jack'], 'lisi']
#注释说明:names2的['李杰', 'jack']随着小列表里头的内存地址发生了变化。

深拷贝

import copy
names2 = copy.deepcopy(names)
print(names)
print(names2)
names[2]="马汉"
names[5][0]="李杰"
print(names)
print(names2)
输出
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan', ['alex', 'jack'], 'lisi']
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan', ['alex', 'jack'], 'lisi']
['wangchao', 'mahan', '马汉', 'zhaohu', 'zhangsan', ['李杰', 'jack'], 'lisi']
['wangchao', 'mahan', 'zhanglong', 'zhaohu', 'zhangsan', ['alex', 'jack'], 'lisi']
#深copy就不会出现这样的问题

元组

元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

names = ("wangchao","mahan","zhanglong","zhaohu","mahan","zhangsan")
print(names.index("mahan")) #获取第一个同名的下标
print(names.count("mahan")) #统计个数

变量的修改

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:liyananname = "alex"
print(name.capitalize()) #首字母大写names = "my name is alex"
print(names.count("a"))#统计有几个
print(names.center(50,"-"))#把变量names按照50个字节居中
print(names.endswith("ex"))#判断是否有ex这个字符串
print(names[names.find("is")])#在变量中找到is打印首字母print('+'.join(['1','2','3']))#1+2+3p = str.maketrans("abcdef","123456")
print("alex li".translate(p))#如果"alex li"里中有abcdef,就把a替换成1,把b替换成2,...没有就不替换print('1+2+3+4'.split('+'))#按+分开取出里头的元素
输出
Alex
2
-----------------my name is alex------------------
True
i
1+2+3
1l5x li
['1', '2', '3', '4']

字典

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
格式

info = {'stu1101': "TengLan Wu",'stu1102': "LongZe Luola",'stu1103': "XiaoZe Maliya",
}

字典的特性:
1、元素是无序的;
2、key是唯一的,字典天生去重

增加:

info['stu1104']='teacher li'
{'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'teacher li'}
#或者
info.setdefault

修改

info['stu1101']='李老师'
{'stu1101': '李老师', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'teacher li'}

删除

字典{'stu1101': '李老师', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'teacher li'}
info.pop('stu1101') #标准删除
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'teacher li'}
del info['stu1103'] #也是一种删除方法
{'stu1101': '李老师', 'stu1102': 'LongZe Luola', 'stu1104': 'teacher li'}
info.popitem() #随机删除
{'stu1101': '李老师', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}

获取

print(info)print("stu1101" in info) #标准用法
print(info.get("stu1103"))#获取
print(info['stu1103'])#也是获取
# print(info['stu1105']) #获取一个没有的元素会报错
print(info.get("stu1105"))#用get获取,不会报错,返回none
#输出
{'stu1101': '李老师', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'teacher li'}
True
XiaoZe Maliya
XiaoZe Maliya
None

多级字典嵌套

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:liyananav_catalog = {"欧美":{"www.youporn.com": ["很多免费的,世界最大的","质量一般"],"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],"x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]},"日韩":{"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]},"大陆":{"1024":["全部免费,真好,好人一生平安","服务器在国外,慢,"]}
}av_catalog["大陆"]["1024"][1] += "用爬虫"
print(av_catalog["大陆"]["1024"])
#输出
['全部免费,真好,好人一生平安', '服务器在国外,慢,用爬虫']

循环dict

for key in info: #方法1print(key,info[key])for k,v in info.items(): #方法2,会先把dict转成list,数据量大时莫用print(k,v)

day2_数据运算和类型、列表、元组、字典相关推荐

  1. python 高级变量类型(列表/元组/字典/字符串)

    前言 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) 真 True 非 0 数 -- 非零即真 假 False 0 复数型 ...

  2. Python 字符串/列表/元组/字典之间的相互转换 - Python零基础入门教程

    目录 一.字符串 str 与列表 list 1.字符串转列表 2.列表转字符串 二.字符串 str 与字典 dict 1.字符串转字典 2.字典转字符串 三.列表 list 与字典 dict 1.列表 ...

  3. python_列表——元组——字典——集合

    列表--元组--字典--集合: 列表: # 一:基本使用# 1.用途:存放多个值 # 定义方式:[]内以逗号为分隔多个元素,列表内元素无类型限制# l=['a','b','c'] #l=list([' ...

  4. python列表元组字典集合实验心得_python学习小总结(列表、元组、字典、集合、字符串)...

    ---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.ext ...

  5. Python基础之day03-字符串,列表,元组,字典

    Python基础之day03-字符串,列表,元组,字典 文章目录 Python基础之day03-字符串,列表,元组,字典 一.字符串 二.下标与字符串切片 三.列表 四.元祖 五.字典 六.公用方法 ...

  6. Python列表,元组,字典的区别

    Python列表,元组,字典的区别: 1.元组是不可变的, 而列表.字典是可变的.元组是不可变对象,对象一旦生成,它的值将不能更改:列表是可变对象,对象生成后,可以对其元素进行更改.添加.删除.清空. ...

  7. python中列表 元组 字典 集合的区别

    参考文章:python中列表 元组 字典 集合的区别

  8. python列表添加元素的三种方法定义集合数据对象_(1) List,tuple,dictionary,Python语法基础集,一,之,列表,元组,字典,集合...

    Python序列(列表.元组.字典.集合) 一.列表(List)与列表推导式 (一)列表(list) 1.列表是Python内置 可变序列 (列表中元素可增加删除或修改): 2.列表元素放在一对中括号 ...

  9. *python高级数据-列表-元组-字典

    列表list 列表用来存放多条数据:字符串.int.list.dict等都可以 储存一系列名字,存储一些新闻条目,可以使用列表的格式. # 例如 Name = '张三' Name2 = 'lisi' ...

  10. day1 简介,变量,用户输入,字符串拼接,列表,元组,字典

    1.python 简介 一.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的 ...

最新文章

  1. putty颜色设置|securecrt颜色设置|windows命令行颜色设置
  2. 基因分子生物学~强和弱化学键
  3. 中标麒麟linux系统安装打印机_中标软件+天津麒麟=中国国产操作系统新旗舰
  4. sql server安装记
  5. css3-6 表格如何设置样式和定位样式是什么
  6. 华为P50外观定了:居中挖孔
  7. html调用阅读模式,easyread.js—给网站开启阅读模式html教程
  8. git did not exit cleanly (exit code 128)
  9. ireport使用参考
  10. SQL注入—MYSQL基础语句(持续更新)附图
  11. drcom宽带认证登录超时_drcom宽带认证客户端登录超时
  12. Deep Neural Networks are Easily Fooled High Confidence Predictions for Unrecognizable Images
  13. Java 进程启停及诊断 Jarboot大改版、焕然一新
  14. RTL设计与编码指导
  15. R语言逻辑回归预测分析付费用户
  16. JDK8新特性01-Lambda表达式
  17. 线性代数 矩阵乘法示例
  18. 薛蛮子和前8848总裁吕春维共同创立的车托帮
  19. 第三方支付开发业务的一些概念
  20. STM32CubeIDE属于一站式工具,本文带你体验它的强大

热门文章

  1. 如何更改iPhone备份和iTunes MobileSync备份文件夹的位置
  2. python中关于时间和日期函数的常用计算总结
  3. IcedTea:首个100%兼容、开源的Java
  4. 女子人身安全防卫指南
  5. 产业链图谱:2021年中国智能制造业产业链图谱|产业链全景图
  6. 计算机一级选择题答题技巧,计算机一级考试模拟题内容 答题技巧
  7. 聊一聊我常用的6种绘制地图的方法
  8. Canvas绘制地图
  9. DirectX12(D3D12)基础教程(一)——基础教程
  10. 【渝粤题库】陕西师范大学209004道德教育案例研究 作业 (高起专)