首页 > 编程语言 > 详细

python基础

时间:2021-08-26 09:18:25      阅读:19      评论:0      收藏:0      [点我收藏+]

参考视频:

https://www.bilibili.com/video/BV1c4411e77t?p=2

参考文档:

https://blog.csdn.net/ityard/article/details/102807071?utm_source=app&app_version=4.13.0

一、变量

技术分享图片

 

 

 访问变量可以直接用该变量的变量名来访问。

tips:

1)变量不可以以数字开头。

2)变量区分大小写。

3)python中支持中文变量名。

技术分享图片

 

如果将中文赋值给变量,中文要加引号

 

 技术分享图片

▲交换两个变量的值:

技术分享图片

 

 

二、字符串

python的字符串主要有:

Single quotes

Double quotes

Triple quoted

 

技术分享图片

 

 上图中,"\"表示转义字符,\ 后的 ‘ 仅表示字符单引号,不表示字符串的起始符号。

技术分享图片

 

 在 \ 号前再加上一个转义字符 \ 号,表示显示出 \ 号。

\\ 中第一个 \ 是转义字符,第二个 \ 是要转义的字符串。

 

▲原始字符串:

技术分享图片

 

 加上 r 后表示之后的字符串中没有转移字符串,全部按照原始字符串打印输出。

 

▲长字符串 Triple queoted:(三个单引号或者三个双引号都可以,但是一定要成对出现)

在一行的末尾加 \ 表示内容还未输入完毕。

技术分享图片

 

使用长字符串,就不用每一行末尾都打 \ 来表示该行还未结束,如:

技术分享图片

 

 

▲字符串的加法和乘法:

字符串的加法是拼接

字符串的乘法是复制

技术分享图片

 

三、比较运算符

技术分享图片

 

 

四、缩进

python通过缩进层次来划分语句的执行:

技术分享图片

运行:

技术分享图片

 

 技术分享图片

 运行:技术分享图片

 

▲引用库函数,导入随机数

技术分享图片

 

 

五、数字类型

python有:整数、浮点数和复数三种类型

python中整数有无限的精度,可以随时随地进行大数运算。

python中浮点数是有误差的:

技术分享图片

 

技术分享图片

 

解决方法:引入decimal模块

技术分享图片

 

此外,python采用科学计数法,如:

技术分享图片

 

5e-05表示5*10^(-5)

复数:复数包含实部和虚部

技术分享图片

 

 

六、数字间的运算

技术分享图片

 

 

七、布尔类型

技术分享图片

 

 为假的:

技术分享图片

 

其中,Fraction(0,1) 表示分子为0,分母为1的有理数

Tips:

技术分享图片

 

▲逻辑运算符:and or not

其中,如果给到的操作数是两个数值,则运算的结果也是两个数值。

技术分享图片

and or 这两个运算符遵从短路逻辑:从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。

python的运算符优先级:

技术分享图片

技术分享图片

 

 

八、分支和循环

▲分支结构

1.技术分享图片

 

 

技术分享图片

技术分享图片

 

2.技术分享图片

 

 

技术分享图片

技术分享图片

 

 

 3.技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

4.

技术分享图片

 

 

5.

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

▲分支结构的嵌套

技术分享图片

 

 

 

▲循环结构

1.while 循环

技术分享图片

 

 

技术分享图片

 

 

跳出死循环用

1)break:跳出本级循环

技术分享图片

 

 

注意上图中的yes必须加引号,否则 不加引号的yes就是 变量了。

2)continue:跳出本轮循环

技术分享图片

 

 

 

循环中的else:

技术分享图片

 

 

 

循环中的嵌套:

技术分享图片

 

2.for循环

技术分享图片

 

 

技术分享图片

 

 

但是要注意,整形不是 可迭代对象,因此需要使用 range() 函数:

技术分享图片

 

 

range(stop) :生成一个从0开始到stop间的整数数列

技术分享图片

range(start,stop):

技术分享图片

 

 

range(start,stop,step):指定跨度,其中step也可以为负数

技术分享图片

 

 

技术分享图片

 

 

计算从0加到1000000:

技术分享图片

 

 

 

九、列表

列表可以包含不同类型的元素,元素之间用逗号隔开。

技术分享图片

 

 

 

列表切片:

技术分享图片

 

 

注意, rhyme[0:3] 表示输出 0~2 三个元素,不包括 rhyme[3]

▲列表的增删改查:

1.增

使用 append() 方法,功能是在列表的末尾添加一个指定的元素

技术分享图片

 

 

exend() 方法可以直接添加一个可迭代对象(列表即是一个可迭代对象),并将内容添加到列表的最后一个元素的后面

技术分享图片

 

 

使用切片的方法也可以实现插入:

技术分享图片

 

 

注意,上图中 如果是 s[5:],则表示输出从第六个元素开始的数;如果是s[0:],则表示输出从列表中第一个元素开始的数。

上面的 s[len(s):]=[6] 相当于 s.append(6)

技术分享图片

 

 

上图中的 s[len(s):]=[7,8,9] 相当于 s.extend([7,8,9])

 

▲在列表的任意位置添加数据:

insert() 方法:第一个参数指定待插入的位置,第二个参数指定待插入的元素

技术分享图片

 

 

 

2.删除

使用 remove() 方法

技术分享图片

 

 

注意:

如果列表中存在多个匹配的元素,那个只会删除第一个。

如果指定的元素不存在,那么程序就会报错

 

▲删除指定位置上的元素,使用 pop() 方法,其参数是要删除元素的索引

技术分享图片

 

 

注意,上图中 s.pop(4) 是指删除下标为4的元素,并不是删除元素4,所以删除的元素为5

 

▲clear() 方法,清空列表

技术分享图片

 

 

 

3.改

技术分享图片

 

 

技术分享图片

 

 

 

排序方法:

sort() 从小至大排序

技术分享图片

 

 

reverse() :将列表中的元素翻转,先使用 sort() 再使用 reverse() 相当于从大至小排序

技术分享图片

 

 

或者直接:使用s.sort(reverse = Ture)

技术分享图片

 

 

 

4.查

count() 函数,查询列表里有多少个该元素

如 s.count(3) 即查询列表中有多少个3这个元素

技术分享图片

 

 

 

index() 函数,查找列表中某个元素的索引值

如 s.index(4) 即查找s列表中4这个元素的索引值

技术分享图片

 

 

如果一个列表中有多个相同的元素,则 index() 函数会返回第一个该元素的索引值

index(x,start,end) 指从指定范围中查找x

▲copy() 函数(浅拷贝)

技术分享图片

 

 

 

▲列表的加法和乘法运算

列表的加法运算是拼接

技术分享图片

 

 

列表的乘法是将列表的元素重复n遍

技术分享图片

 

 

 

▲嵌套列表

技术分享图片

 

 

访问嵌套列表:

使用循环可以访问嵌套列表

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

使用循环来初始化二维列表:

技术分享图片

 

 

注意,不能这样来创建二维列表:

技术分享图片

 

 

上图中,is 运算符 用来检验两个变量是否指向同一个对象的一个运算符

显然从上图中看出,A的第一行 A[0] 和A的第二行 A[1] 不是同一个对象,但是B[0] 和B[1] 是同一个对象,如下图所示:

技术分享图片

 

 

 

python文档中给出的解释:

技术分享图片

当我们使用 lists = [ [ ] ] * 3 来创建列表 lists 时,并不是简单的拷贝,而只是对[ [ ] ] 重复引用了3次,所以当我们使用 lists[0].append(3) 时,并不是只是 lists中的第一个空列表元素中的值 lists[0] 变为3,而是三个全部变为了3

而一般的情况如下:

技术分享图片

 

 

 

▲变量中的赋值,深拷贝和浅拷贝:

技术分享图片

 

 

这样,如果更改x列表中的元素,那么y列表中的元素也会随之改变,如下图所示

技术分享图片

 

此时:

技术分享图片

如果想要得到两个独立的列表,要通过拷贝来实现

拷贝分为 深拷贝和浅拷贝

浅拷贝:利用 copy() 或者列表切片的方法都是浅拷贝

copy()函数:

技术分享图片

 

 

此时:

技术分享图片

 

 

列表切片:

技术分享图片

 

 

 

但当涉及到嵌套列表时,若使用copy() 方法:

技术分享图片

 

 

由上图可知,虽然只是修改了x[0][0],但是二维列表y中的元素也被修改了

这是因为浅拷贝只是拷贝了外层的对象,如果包含嵌套对象的话,那么拷贝的只是其引用,如下图所示:

技术分享图片

此时可以使用深拷贝 deepcopy() 来解决:

若要使用深拷贝,需要先导入copy模块

技术分享图片

如上图所示,先导入copy() 模块,copy模块中的copy() 函数是浅拷贝函数,copy模块中的 deepcopy() 函数是深拷贝函数。

deepcopy() 函数将原对象拷贝的同时,也将对象中所有引用的子对象一并进行了拷贝。

技术分享图片

 

 

但是深拷贝的效率不如浅拷贝。

 

▲列表推导式

如果要将一个列表中的每个元素都变为2倍:

技术分享图片

 

 

列表推导式:

技术分享图片

 

 

 

列表推导式的构造:

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

技术分享图片

 

 

列表推导式还可以添加一个if语句:

技术分享图片

 

 

技术分享图片

其中上述语句的执行顺序是:

技术分享图片

 

 

 

例子:

技术分享图片

 

 

包含嵌套的列表推导式:

技术分享图片

 

如:将一个二维数组降维成一维数组:

技术分享图片

 

其中,for row in matrix 是第一层循环,for col in row是第二层循环

 

笛卡尔积:

技术分享图片

 

 

列表推导式的最复杂的一种构造:

技术分享图片

 

技术分享图片

 

 

十、元组

技术分享图片

 

元组可以像列表一样同时容纳多种类型的对象,也拥有字符串不可变的特性。

技术分享图片

 

由上图可知,元组可以不加括号,也可以使用切片,并且元组中的元素不能修改,当修改一个元组中的元素时会发生错误。

元组的查询及一些其他用法:

技术分享图片

 

如何生成只有一个元素的元组:

技术分享图片

 

 

▲打包和解包:

创建一个元组称为将元组中的元素打包;

一次性将元组中的元素都赋值给变量称为元组的解包。

技术分享图片

 

且这种用法其他数据类型也可以使用:

技术分享图片

 

但是一定要注意左边的变量个数一定要与右边的元素个数相同。

 

python中可以多重赋值:

技术分享图片

 

实际上就是先将10,20进行元组打包,再解包给x,y两个变量

 

注意一点,元组虽然是不可变的,但元组中的元素若是可变的列表,则列表中的元素仍然是可变的,如下图:

技术分享图片

 

 

十一、字符串

如何判定一个数是否为回文数,可以使用字符串进行解决:

技术分享图片

 

 

字符串中的方法:

技术分享图片

 

capitalize():将字符串的首字母变为大写,其他变为小写,并且返回的并不是字符串,因为字符串是不可变的对象,返回的只是生成的一个新的字符串。

casefold():返回一个所有字母都小写的字符串

title():字符串中每个单词的首字母都变大写 ,其他都变为小写

swapcase():大小写翻转

upper():所有字母变大写

lower():所有字母变小写

技术分享图片

 

技术分享图片

 

技术分享图片

 

技术分享图片

 

count()函数用于查找sub子字符串在字符串中出现的次数

技术分享图片

 

 find()和rfind函数是查找sub子字符串在字符串中的索引下标值,前者从左往右找,后者从右往左找

技术分享图片

 

技术分享图片

 

技术分享图片

 

join(iterable)

字符串拼接

技术分享图片

 

 

技术分享图片

 

 

▲如何用 join()函数实现两个字符串的拼接

技术分享图片

 

 

只需用空将字符串连接起来就可以了,join()方法实现字符串拼接要比 + 实现字符串拼接效率高很多很多。

 

▲格式化字符串  format()

技术分享图片

 

 

技术分享图片

 

 

需要注意的是,我们还可以在 {} 中添加索引下标:

技术分享图片

 

 

这是因为括号中的参数会被当做是元组中的元素来看待,因此 Tom 的索引是0,Jerry 的索引下表是1.

同时,同一个索引值可以被引用多次:

技术分享图片

 

还可以使用关键字进行索引:

技术分享图片

 

如果想输出花括号的话,只需:

技术分享图片

 

 

▲f/F-字符串:一种让格式化字符串更简便的语法表达

技术分享图片

 

 

十二、序列

列表、元组和字符串都统称为序列

可变序列:列表

不可变序列:不可变序列

能够作用域序列的一些运算符和函数:

+ :拼接

* :重复

in:判断某个字符是够包含在序列中

技术分享图片

 

is:判断两个对象是否id相同(id相当于c语言中的地址)

del:用于删除一个或多个指定的对象

技术分享图片

 

del同样适用于列表的切片等中:

技术分享图片

 

用del实现列表的clear()方法:

技术分享图片

 

 

▲跟序列相关的一些函数

技术分享图片

 

list():将一个可迭代对象转换为列表:

技术分享图片

 

同样的,tuple()是将一个可迭代对象转化为元组,str()是将一个可迭代对象转换为字符串,如上图所示。

技术分享图片

 

对比传入的参数,并返回最小值和最大值

技术分享图片

 

技术分享图片

 

技术分享图片

 

技术分享图片

 

 排序以及翻转。

对列表s使用sorted()和sort()方法:

sorted()函数返回一个全新的列表,而sort()方法在原列表上进行更改。

同样的reversed()和reverse()也是一样的。

sort()函数只能处理列表,而sorted()函数可以处理任何可迭代对象。

技术分享图片

 

all()函数是判断可迭代对象中是否所有元素都为真;

any()函数是判断可迭代对象中是否存在元素为真。

 

技术分享图片

 

技术分享图片

 

技术分享图片

 

 

技术分享图片

技术分享图片

 

其中,ord() 函数是求 unicode编码。

技术分享图片

 

 

技术分享图片

 

 该函数的第一个参数是过滤的参数,第二个参数是待过滤的对象

技术分享图片

 

 

▲迭代器:一次性的可迭代对象

如,map函数会返回一个迭代器:

技术分享图片

 

用for语句访问过迭代器之后,再访问的话就是空了

 

iter():将可迭代对象变为迭代器

技术分享图片

 

如上图,x是一个列表,是一个可迭代对象,而y类型是 list_iterator,是一个迭代器

next():逐个的将迭代器中的元素提取出来:

技术分享图片

 

python基础

原文:https://www.cnblogs.com/San-Francisco/p/15169668.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!