目录
一、标识符
二、Python保留字
三、数据类型和控制流
1.数据类型
•字符串:例:s='ilovepython',至于什么时候用单引号,什么时候用双引号,要看当字符串中出现单引号就用双引号框住所有,有双引号就用单引号框住所有。
•list:
•Tuple(元祖)
• dict
•set(集合)
•文件
文件对象:
2.控制流
while循环:
四、数字类型
一、标识符
1.第一个字符必须是字母表中字母或下划线_。(首字不能为数字)
2.标识符的其他部分由字母、字母和下划线组成。
3.标识符对大小写敏感。
4.并且python3可以用中文作为变量名。
二、Python保留字
保留字即关键字,我们不能把它们用作任何标识符名称。Python的标准库提供了一个keyword模板,可以输出当前版本的所有关键字。
>>> import keyword
>>> keyword. kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class' ,' continue ','def','del', 'elif', 'else', 'except','finally', 'for', 'from' , 'global', 'if', 'import', 'in', 'is', 'lambda' ,' nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
三、数据类型和控制流
1.数据类型
一切皆是对象
比如int float在其他语言中是简单数据类型,但在Python中是对象
• 数字型:int, float, complex(复数运算的对象),
• 布尔型:boolean,
• 字符型:string(指的就是字符串,Python中没有单个的字符),
• 序列型:list(列表), tuple(元祖), range(范围)
• 映射型:dict(名值对的数据类型,由一个关键字或者key与对应的value值组成),
• 集合型:set
• 文件 :File
• Python3中6个标准数据类型:
• 不可变数据(3 个): Number (数字)、 String (字符串)、 Tuple (元组);(例:一个字符串中不允许改单个字符)
• 可变数据(3 个): List (列表)、 Dictionary (字典)、 Set (集合)
•布尔型:与其他语言不同的是或并非用英文字母表示:or and not
•字符串:例:s='ilovepython',至于什么时候用单引号,什么时候用双引号,要看当字符串中出现单引号就用双引号框住所有,有双引号就用单引号框住所有。
Python访问字符串的值:
1.从左到右索引默认0开始的,最大范围是字符串长度少1
2.从右到左索引默认-1开始的,最大范围是字符串开头
s[0] # i
s[1:5] # love
s[-6:] #python 负数就是倒数第几个数开始,因为这个没有说截止的位置所以就是从倒数第几个到最后一个
s[::-1] #nohtypevoli 从倒数第一个开始颠倒
# 等价于s[-1::-1]
# step为负数,从左向右截取
字符串常用内建函数
startswith()/endswith()
count()
find()/index()
join():输入一个列表,通过在join开头提供的字符进行连接
replace():把.......替换成........
split():把字符串按照我们约定的分隔符进行切割,如果不指定分隔符则默认空格进行分割
strip(): 把前后的空格去掉
find在找不到字符串时返回-1,而index则抛出一个异常
字符串格式化:
%s实际上是一个占位符,将来这个%s会被后面的Xi’an这个常量字符串代替,出现几个%s后面就要提供几个常量字符串。
另一种是利用format函数,这个是利用{}实现的与上述原理相同。
我们 还可以给花括号起名字:
例如我们这里取名为city和province,format函数中我们通过先书写占位符名称再提供字符串的方式就可以实现代替。
•list:
定义 a_list = ['physics', 'chemistry', 1997, 2000]
1.访问列表中的值:
a_list[1]
a_list[0:1] # 切片参考string
2.更新/删除列表
a_list[2] = 2001
del a_list[2] #删除列表
注意:
1 、 List 写在方括号之间,元素用逗号隔开。
2 、和字符串一样, list 可以被索引和切片。
3 、 List 可以使用 + 操作符进行拼接。
4 、 List 中的元素是可以改变的。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
常用列表方法
• append():在当前列表的末尾添加新的元素,append方法调用完了之后是没有返回值的,所以例题中才会输出None。
• extend() #a.extend(b) 或者 a + b:对当前列表进行扩充,extend方法调用完了之后是没有返回值的,所有例题中才会输出None。
与extend具有相同效果的就是加法运算符,不过不同的是加法运算符不会改变原有的列表。
• insert():可以进行插入操作,例题中就是在2位置(orange)处插入字符
• pop():默认从列表的最后一个位置进行删除,pop方法也可以带参数,例题中带了参数0,那么我们就把0位置(apple)删除。(注意例题中用的都是同一列表,在上一个操作中就已经将orange删除了,不要误以为pop(0)删除了两个字符。)
• sort()
• count()
• index()…
该例题中big_fruits包含了三个fruits的引用(类似于C语言中的指针),这样就构成了一个嵌套型列表,对于这样一个嵌套型列表而言,我们在fruits后添加一个元素”mongo“,那么在嵌套列表中每个都加了mongo。
那我们怎样才能避免呢?
创建big_fruits时我们不直接引用fruits,用list方法去创建一个新的列表对象,这个新的列表对象是用fruits来初始化,那么三个list的调用就创建了三个独立的fruits对象,这个时候我们再在fruits后面添加数据元素我们在big_fruits中是观察不到变化的。
我们想要访问 big_fruits的下标为一的行和下标为二的列就用big_fruits[1][2]访问,得到orange。
想要修改下标为一的行和下标为二的列可以直接赋值修改。
列表中的常见操作: conprehension列表推导式
用一个for循环来连续创建三次fruits对象,这个for循环的写法在这里就是一个列表推导式。
它的结构如第二个例子一样,首先书写一个循环,这个循环将会列出在范围10以内的所有i,在此处是从0开始到10之前的所有整数,也就是0到9这10个整数,if这个条件就进一步的筛选,最后输出0到9之间的偶数。
•Tuple(元祖)
Tuple(元组):操作特性和list类似
定义 :
seq = ('physics', 'chemistry', 1997, 2000)
seq = (1, )
seq = 'physics', 'chemistry', 1997, 2000
可用()括起来也可不用,对于字符串需要加单引号,如果元祖中的元素只有一项需要在这个元素的后面加一个逗号,否则元祖会把这个数据对象看成一个整数。
需要特别注意的是第一点,有时候也是可以改变的,例如:
这个元祖的最后一个元素是个列表,我们通过给列表添加值可以改变元祖。
sequence(string list tuple)&控制流-for循环语句
首先创建三种序列性的数据对象
但是对于这种序列型的我们需要知道他的下标位置我们应该怎么做呢?
首先我们需要在for循环中增加一个下标变量index,然后将我们需要遍历的对象用枚举函数enumerate进行处理,那么我们的原本的对象将变成迭代对象,这种对象会带有下标数。默认的开始下标数是0,如果我们需要自己定下标数,就在对象的后面提供一个额外的参数,这个下标就指明了从几开始。
还有一种特殊的形式:
for......else...... 的执行顺序为:
当迭代对象完成所有迭代后且此时的迭代对象为空时,如果存在 else 子句则执行 else子句,没有则继续执行后续代码;如果迭代对象因为某种原因(如带有break关键字)提前退出迭代,则 else 子句不会被执行,程序将会直接跳过 else 子句继续执行后续代码。
• dict
• 也可以理解为映射,key-value的键值对
'abc'对应key,123对应value,dict中可以包含各种数据类型。
Ø 字典 (dictionary) 是除列表以外 python 之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
Ø 两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
Ø 字典用 "{ }" 标识。字典由索引 (key) 和它对应的值 value组成。
• 字典基本操作:
• 字典特性
1. 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住 。
2. 键必须不可变,所以可以用数字,字符串或元组充当。
需要特别注意的是,当元祖中出现可变数据类型(例如:列表)时,元祖就是可变的,这个时候元祖就不能作为key了,程序就会报错。
注意:一个对象能不能作为字典的 key ,就取决于其有没有 __hash__ 方法 。所以所有 python 自带类型中,
目前我已知的除了 list 、 dict 、 set 和 内部带有以上三种类型的 tuple 之外,其余的对象都能当 key 。
• 字典常用方法:
• get()
当在d中找不到提供的b时,程序会报错,而当 应用get方法时,会返回get方法后面提供的参数。
• keys() / values() / items()
key()就是返回key值
values()就是返回values值
items()就是返回key和values配对的组合。
• pop()
pop()就是删除键值对,只需要在括号里输入键就可以把值也删掉。
• update()
• clear()
update()就是把字典进行扩充。
clear()就是清空字典中所有的数据。
•set(集合)
• 类似数学上的定义 :
在集合s里就返回true,不在就返回false。
基本操作:
集合( set )是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合。
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建
一个空字典。
交集就和数学中学的一样,求相同的元素;
并集就是两个集合中所有的元素;
差集就是在s1中并且没有s2中的元素(s1-s2);
对称差就是 先求并集,再将重复元素删掉。
有{}括起来就是把整个字符串加到集合中,没有花括号就是把单个字符加到集合中去,且重复要去掉。
对于 python 中列表 list 、 tuple 类型中的元素,转换为集合后,会去掉重复的元素。
注意:对于是字典和字符转换的集合是随机删除元素的。当集合是由列表和元组组成时、set.pop() 是从左边删除元素的。
•文件
文件对象:
用open()打开文件,还可以在其中加参数,来表明是读还是写,默认是读。
文件属性:
f.name # 文件名
f.mode # modes: r, w, a, x
读取文件内容:
f.read() # get the file 读取整个文件内容
f.read(100) # read 100 bytes 只取前一百个字节
f.readline() # read one line 读取一行数据
f.readlines() # read all lines 读取所有的行,并返回一个列表
f.seek(0) # start of file 回到文件的开头位置
写入文件:
f.write(“some_content”)
关闭文件:
f.flush() 输入文件时会存放在一个缓冲区,缓冲区满了就存放到文件中,如果缓冲区没满没有填入到文件直接用 close (), 可能关闭时会出异常。
f.close()
这是完整的打开文件的语法,用with和as关键字。
2.控制流
普通的条件判断:
if后的语句可以加括号也可以不加
多case判断:
else if 可以缩写为elif
三元表达式:
if之前书写当条件成立时所得到的表达式,if和else之间书写条件,else之后书写当判断为假是的表达式
while循环:
一般的while循环格式:
while后面跟循环条件,然后就是循环体。
while...else....:
这个很明显可以看出循环体是想要找出list中有没有x,遍历所有字符发现没有x,于是执行else中的语句,输出x不存在。
这个发现list中有x,所以执行break,会直接跳出循环,并且不会执行else中的语句。
四、数字类型
Python3 支持 int 、 float 、 bool 、 complex
• 最大的特点是整数不限制大小
• 浮点数受到 17 位有效数字的限制
• 常见的运算包括加、减、乘、除、 整除、求余、幂指数等
• 一些常用的数学函数如
sqrt/sin/cos 等都在 math 模块中
import math
math.sqrt(2)
Python 内置对复数的计算
• 支持所有常见的复数计算
• 对复数处理的数学函数在模块 cmath 中
import cmath
cmath.sqrt(1+2j)