python总结(持续更新)

简介
本篇博客内容为python的知识回顾,粗略总结了入门python的知识点,现博主用于大学python课程的复习,仅供学习交流。

目录
第一章---------------------------------------输出函数
第二章----------------------------变量及数据类型
第三章-------------------------输入函数与运算符
第四章---------------------------------------分支结构
第五章----------------range( )函数与循环结构
第六章----------------------------------------------列表
第七章----------------------------------------------字典
(待更新)

第一章

一.输出函数print
1.print函数会自动换行

>>>print(1)
>>>print(2)
1
2

如果想要同一行输出,需要手动修改end值

>>>print(1,2)
>>>print(1,end='')
>>>print(2)
12
12

end可以等于任意字符串

>>>print(1,end="**")
>>>print(2)
1**2

2.print输出格式

>>>print("%s is %s" % ('it', 'python'))
>>>print('{0} is {1}'.format('it','python'))
it is python


#提示:{
     }中的数字可以省略

print函数超详细用法

3.format()用法
(1)对齐
< > ^ 分别表示左对齐(默认),右对齐,居中对齐

>>>print('{0:<20}'.format('python'))
>>>print('{0:>20}'.format('python'))
>>>print('{0:^20}'.format('python'))
python
                     python
         python

(2)千分分隔符

>>>print('{:,}'.format(123456789))
123,456,789

(3)精度
对浮点数来说,精度表示小数部分输出的有效精度
对于字符串,则表示输出的最大长度

>>>print('{0:.2}'.format(0.345))
>>>print('{0:.2f}'.format(12.345))
>>>print('{0:.4}'.format('python')
0.34
12.35
pyth

(4)进制换算

>>>print('{0:b},{0:d},{0:o},{0:x}'.format(324))
101000100,324,504,144

二.转义字符
同其他编译语言相同,常用的有
\t制表符 \n换行符 \反斜线 \‘单引号 \"双引号
若不希望字符串中的转义字符起作用,则在字符串前加上r/R(注意:最后一个字符不能是’\’)

>>>print(r'hello \n world')
hello \n world

---------------------------------分割线------------------------------------

第二章

一.保留字
(1)被赋予了特定的意义的叫做保留字,如if(条件函数) def(定义函数)
(2)标识符起名规则:
①字母,数字,下划线
②不能以数字开头
③严格区分大小写
④不能是保留字

二.变量的定义和使用
变量由 标识 类型 值 三部分组成
如a=1
系统会为该变量a分配内存,变量a指向数字1的内存地址

python总结(持续更新)_第1张图片

变量重新赋值并不是改变其所指向的内存地址的值,而是改变类指针方向,使其指向数字2的内存地址,数字1的内存地址并不会消失

python总结(持续更新)_第2张图片

三.数据类型
1.int float str bool
pthon中没有char类型,一个字符也是字符串类型

2.浮点数
(1)浮点数直接相加可能会出错

>>>print(1.1+2.2)
3.3000000000000003

#通过引入decimal达到保证精度的目的:

from decimal import Decimal
print(Decimal('1.1')+Decimal('2.2'))

python decimal精确计算

(2)判断两个浮点数是否相等
abs(a-b)<1e-6

3.字符串str
字符串的定义可以用 ‘’,"", ‘’’ ‘’’, “”" “”"(一或三对单引号、双引号)来定义,前两者所定义的内容必须在同一行,后两者可以分布在连续的多行

>>>a='python'
>>>b='''pyt
>>>     hon'''
>>>print(b)
python

4.类型转换
int() str() float()
在python中,若已定义整型变量a=1,想打印出"a=1"不能够用句子print(‘a=’+a)
因为在连接句子时只能用str类型,所以可以用str()将int转化为字符串

>>>a=1
>>>print('a='+str(a))
a=1

#或者利用format()

>>>print('a={}'.format(a))
a=1

另外,将bool值False转化为str类型时将得到’False’而不是0,将值为小数的字符串转化为int类型时报错

四.注释
单行注释 以#开头,直到换行结束
多行注释 将一对三引号之间的代码作为多行注释

---------------------------------分割线------------------------------------

第三章

一.input函数
作用:接收来自用户的输入
①输入的类型为str
②使用=对输入的值进行储存

>>>a=input()
'''输入1,则a='1' 
   需要注意,a的值是字符'1',
   可以通过a=int(input())
   将输入的字符串转化为整数类型,
   同理可转化为其他类型
   输入python
   则a的值为字符串'python' 
   '''
'''与其他语言不同的是,
   可以在input函数中加入'提示语句'
   '''
>>>a=input('请输入a的值:')
# 运行之后会先输出input中的字符串,

请输入a的值:
#此时输入1,则将'1'赋给变量a

二.运算符

1.算数运算符

× ÷ + - 乘 除 加 减

//整除运算
11//2=5 -9//-4=2
一正一负向下取整
9//-4=-3 -9//4=-3

幂运算
2**3=2 * 2 * 2

%取余
9%4=1
一正一负遵循公式 余数=被除数-除数*商
9%-4=-3
对于取余,不同的汇编语言所计算得到的结果并不完全相同,这里引用别人的总结

1.对于任何同号的两个整数,所有语言的取余运算原则都是使商尽可能小。
2.对于任何异号的两个整数,C++/Java语言的原则是使商尽可能大(结果的符号取决于被模数),很多新型语言(如Python)和网页计算器的原则是使商尽可能小。

原文链接

2.赋值运算符

支持链式赋值 a=b=1
系统为变量a b分配内存,两块内存都指向值为1的内存地址,id(a)==id(b)

支持参数赋值
a+=1 即 a=a+1
同理有 -= 、 *= 、 /= 、 %=、//=
注意 无a++

支持系列解包赋值
a,b,c=1,2,3

两个变量的值的交换可以用 a,b=b,a

3.比较运算符

>= <= == != is   is not

>>>a=b=1
>>>print(a is b)
True
# id相等则返回True,否则返回False
# ==比较的是值,is比较的是id
lst1=[1,2]
lst2=[1,2]
>>>print(lst1 == lst2)
>>>print(lst1 is lst2)
True
False

4.布尔运算符
用not可对bool类型操作数取反

>>>a=True
>>>print(not a)
False

5.in 与 not in
判断整数序列中是否存在(不存在)指定的参数

s='helloworld'
>>>print('w' in s)
True

6.位运算
进行位运算时先将数据转化为二进制

与& 对应位数都是1,结果为1,否则为0 4&8=0
或| 对应位数都是0,结果为0,否则为1 4|8=12
左移 高位溢出舍弃,低位补0 4<<1=8
右移 低位溢出舍弃,高位补0 4>>1=16

对于位运算有两点
①无论左移还是右移,负数的符号位是不会改变的
②每左移或右移一位,就相当与乘或除2,且右移时向下取整 -1/2=-0.5 而-1>>1=-1

7.运算符的优先级
算数运算>位运算>比较>布尔>赋值
** * / // % + - >> << & | > < >= <= == != and or =

---------------------------------分割线------------------------------------

第四章

一.分支结构

if 条件表达式:
    条件执行体
elif 条件表达式:
    条件执行体
else:
    条件执行体
>>>a=1
>>>b=int(input('请输入一个数')
>>>if b>a:
>>>    print('max is b')
>>>elif b==a:
>>>    print('a=b')
>>>else:
>>>    print('max is a')

2.嵌套if

if 条件表达式1:
    if 内层条件表达式:
         内层条件执行体1
    else:
         内层条件执行体2
else:
    条件执行体
>>>a=1
>>>b=4
>>>c=int(input('请输入一个不为1和4的数'))
>>>if c>a:
>>>    if c>b:
>>>         print('a)   
>>>    else:
>>>         print('a)
>>>else:
>>>    print('b)

3.条件表达式

条件表达式是if…else的简写
语法结构

x if 判断条件 else y     (有点类似c语言中的x>y?x:y)
>>>a,b=1,2
>>>print('max is '+ str(a if a>b else b))
max is 2

二.pass语句

作用:语句什么都不做,只是一个占位符,用在语法上需要语句的地方
在还没想好代码怎么写时(如初步构建代码框架或思维时)大量运用

>>>if a>b:
>>>    pass
>>>else:
>>>    pass
# 执行程序不会报错

---------------------------------分割线------------------------------------

第五章

一.range函数
1.range(stop)
创建一个(0,stop)之间的整数序列,步长为1
2.range(start,stop)
创建一个(start,stop)之间的整数序列,步长为1
3.range(start,stop,step)
创建一个(start,stop)之间的整数序列,步长为step
4.range类型的优点
不管range对象表示的序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要储存statr,stop,step,只有当用到range对象时,才会去计算序列中的相关元素

>>>r=range(10)
>>>print(list(r))
[0,1,2,3,4,5,6,7,8,9]
>>>r=range(1,10)
>>>print(list(r))
[1,2,3,4,5,6,7,8,9]
>>>r=range(1,10,2)
>>>print(list(r))
[1,3,5,7,9]
>>>r=range(10)
>>>print(0 in r)
>>>print(11 not in r)
True
True

二.循环结构
1.while循环

while 条件表达式:
     条件执行体
>>>a=0
>>>while a<5:
>>>    print(a,end='')
>>>    a+=1
01234

2.for-in循环

for 自定义的变量 in 可迭代对象:
     循环体
>>>for i in range(1,5):
>>>    print(i,end='')
1234

与C语言的for循环不同的是i不需要加入表达式使i改变,因为循环是否继续取决于可迭代对象
如在上述代码中,range从1开始,以步长为1逐步增加到5,range序列结束,则跳出循环
在此过程中,i作为我们定义的变量,迭代对象的每一轮的值都会赋给i,而它仅仅只是接受值,并不能决定循环是否结束

②除range()外还有list[],tuple(),set{}等都是可迭代对象
③如果循环体不需要访问自定义变量,可以将自定义变量替换为下划线

>>>a=1
>>>for _ in range(1,5,2):
>>>    a+=1
>>>print(a)
3

三.流程控制语句

1.break 作用:用于结束循环结构
continue 作用:结束本轮循环,进入下一轮循环

>>>a=0
>>>for i in range(10):
>>>    if i==3:
>>>        break
>>>    else:
>>>        continue
>>>        a+=1
>>>print(a)
0

二重循环中的break语句会根据break所在的位置对应到相应的循环

>>>num1=num2=0
>>>for i in range(2):
>>>    for j in range(2):
>>>      if i==1:
>>>          break
>>>      else:
>>>          num1+=1
>>>for i in range(2):
>>>    for j in range(2):
>>>         num2+=1
>>>    if i==1:
>>>        break
>>>print(num1,num2)
 2 4         

2.else
else可与if,while,for连用
if条件表达式不成立时执行else
while,for没有碰到break时执行else,else语句的执行可以作为循环体从始至终不断执行的标志

>>>for _ in range(3):
>>>    pwd=input('请输入密码:')
>>>    if pwd=='8888':
>>>         print('密码正确')
>>>         break
>>>    else:
>>>         print('密码不正确')
>>>else:
>>>    print('对不起,三次密码均输入错误')

四.嵌套循环
循环结构中又嵌套了另外完整的循环结构,其中内存循环作为外层循环的循环体执行

>>>for i in range(2):
>>>    for j in range(5):
>>>         print('{}{}'.format(i,j),end='\t')
>>>    print()
01  02  03  04  05
11  12  13  14  15

---------------------------------分割线------------------------------------

第六章

一.列表的创建
1.列表
变量可以储存一个元素,而列表是一个"大容器",可以储存N多个元素,程序可以方便地对这些数据进行整体操作
列表相当于其他语言中的数组
python总结(持续更新)_第3张图片

列表需要使用中括号[],元素之间用英文的逗号进行分隔,创建方式有
①使用中括号 lst=[1,‘a’,‘pyhon’]
②调用内置函数list() lst2=list([1,‘a’,‘python’])

2.列表的特点
①列表元素按顺序有序排序

索引   -6     -5   -4   -3   -2   -1
数据  hello  world  !   it   is  python 
索引    0      1    2   3    4     5

②索引映射唯一个数据

>>>print(lst[0])
hello

③列表可以储存重复数据
④任意数据类型混存
⑤根据需要动态分配和回收内存
这个特点相等于简化了C语言中的链表,可以通过列表函数对元素进行增删改等操作

二.列表的查询操作
1.获取列表中指定元素的索引
index()

(1)如查询列表中存在的N个相同元素,只返回相同元素中的第一个元素的索引
(2)如果查询的元素在列表中不存在,则会报错(ValueError)
(3)还可以在指定的start和stop之间进行查找

>>>lst=['hello','world','hello',2021,3,14]
>>>print(lst.index('hello'))
>>>print(lst.index('python'))
>>>print(lst.index('hello',1,3))
>>>print(lst.index('hello',3,5))
0
报错(ValueError)
2
报错(ValueError)

2.获取列表的单个元素

(1)正向索引从0到N-1
(2)逆向索引从-N到-1
(3)指定索引不存在,报错(indexError)

>>>lst=['hello','world','hello',2021,3,14]
>>>print(lst[3])
>>>print(lst[-2])
>>>print(lst[10])
2021
3
报错(indexError)

3.获取列表的多个元素

列表名[start:stop:step]

(1)切片的结果
原片段的拷贝 会产生不同的列表
(2)切片的范围
(start,stop)
(3)step默认为1,简写为[start:stop]
①step为正数时,若无说明start和stop,切片的第一个元素默认是列表的第一个元素,最后一个元素默认是列表的最后一个元素,从start开始往后计算切片
②step为负数时,若无说明start和stop,切片的第一个元素默认是列表的最后一个元素,最后一个元素默认是列表的第一个元素,从start开始往前计算切片

>>>lst=[1,2,3,4,5,6,7,8,9]
>>>lst1=lst[1:6:1:]
>>>lst2=lst[::2]
>>>lst3=lst[::-1]
>>>lst4=lst[-9:-3:1]
>>>lst5=lst[-9:-3:-1]
>>>print(lst1)
>>>print(lst is lst1)
>>>print(lst2)
>>>print(lst3)
>>>print(lst4)
>>>print(lst5)
[2,3,4,5,6]
False
[1,3,5,7,9]
[9,8,7,6,5,4,3,2,1]
[1,2,3,4,5,6]
[]

(4)列表元素的判断和遍历

>>>lst=[0,1,2]
>>>print(3 in lst)
>>>for item in lst:
>>>    print(item,end=' ')
False
0 1 2

4.列表元素的增加操作

方法 操作描述
append() 在列表的末尾添加一个元素
extend() 在列表的末尾至少添加一个元素
insert 在列表的任意位置添加一个元素
切片 在列表的任意位置至少添加一个元素
>>>lst=[1,2]
>>>lst.append(3)
>>>print(lst)
>>>lst1=[4,5]
>>>lst.extend(lst1)
>>>print(lst)
>>>lst.insert(1,90)
>>>print(lst)
>>>lst2=[6,7]
>>>lst[1:]=lst
>>>print(lst)
[1,2,3]
[1,2,3,4,5]
[1,90,2,3,4,5]
[1,6,7] #切片操作从插入位置开始取代了原列表的内容

以上四种方法都不会改变列表的id
5.列表元素的删除操作

方法 操作描述
remove 一次删除一个元素,重复元素只删除第一个
元素不存在则报错ValueError
pop 删除一个指定索引位置上的元素,若不指定则删除最后一个
指定索引不存在则报错IndexError
切片 一次删除至少一个元素
clear() 清空列表
del() 删除列表

删除与增加的操作大同小异,不再用代码举例

切片操作
>>>lst=[1,2,3,4]
>>>lst1=lst[1:4] #将产生一个新列表
>>>print(lst1)
>>>print(id(lst)=id(lst1)
[2,3,4]
False
#若不想产生新列表,可用以下代码
>>>lst[:1]=[]
>>>print(lst)
[2,3,4]

6.列表元素的修改操作
(1)为指定索引的元素赋一个新值
(2)为指定的切片赋一个新值

>>>lst=[1,2,3]
>>>lst[2]=4   #值改变,id(lst[2])改变
>>>print(lst) #但id(lst)不变
>>>lst[1:3]=[5,6]
>>>print(lst)
[1,2,4]
[1,5,6]

7.列表的排序操作
(1)调用sort()方法,将列表中的元素按照从小到大的顺序进行排序,可以指定reverse=True进行降序排序
(2)调用内置函数sorted(),可以指定reverse=True,进行降序排序
注意:sort()方法会真实改变原列表,而sorted()的排序只是暂时的,调用结束后不会改变原列表,但是可以将其赋予一个变量,生成一个新的排过序的列表

>>>lst=[1,3,2]
>>>print(lst.sorted(lst))
[1,2,3]
>>>print(lst)
[1,3,2]
>>>lst1=lst.sorted(lst)
>>>print(lst1)
[1,2,3]
>>>lst.sort()
>>>print(lst)
[1,2,3]
>>>lst.sort(reverse=True)
[3,2,1]
>>>lst2=['apple','cat','banana','complish','Abc']
>>>print(sorted(lst2,reverse=True))
['complish', 'cat', 'banana', 'apple','Abc']

字符串的排序是按ASCLL码表对应的数的大小来进行排序的
ASCLL码表

(3)在列表中储存的元素不一定只是单个的数据,如列表中的元素还可以是列表,字典,元组等,而对元素中储存的多个数据,可以根据指定key来确定进行对比的元素数据,具体的实现方法可以打开以下链接学习
python列表排序

8.列表生成式

[ 表示列表元素的表达式 for 自定义的变量  in 可迭代对象]

注意事项:"表示列表元素的表达式"中通常包含自定义变量

>>>lst1=[i*i for i in range(1,10)]
>>>lst2=[i*2 for i in range(1,3)]
>>>print(lst1)
>>>print(lst2)
[1,4,9,16,25,36,49,64,81]
[2,4]

你可能感兴趣的:(笔记,python,python,学习笔记)