序列
- Python的变量不需要声明,每个变量在使用之前必须赋值,变量被赋值以后,该变量才会被创建。
- 常见的6个数据类型:数字(Number)、字符串(String)、列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary)。
- 6中数据类型分为两大类:
可变序列:列表、集合、字典。
不可变序列:数字(int、float、bool)、字符串、元组。
- 可变数据类型更改值后,内存地址不发生改变;不可变数据类型更改值后,内存地址发生改变(新建内存地址id())。
- 列表创建的两种方式:一种是直接建立:创建时只需要将元素用逗号隔开,并且用中括号括起来。如:[1,2,3,4];另外一种则是使用list命令进行创建,list():用于将元组或字符串转换为列表。如:list(‘Python’)结果是[‘P’,‘y’,’t’,’h’,’’o’,’n’]。数字是不能直接转列表的。
- 序列是指一块可以存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(索引)访问它们。列表是最常见的可变序列。
- 列表是序列的一种,所以所有的元素都是有序号的,我们称序号为索引。
- 索引有两种:一种是从前往后的正方向索引,第一个索引号为0,并不是1,后面的索引号依次为1/2/3/4/5。 另一种是从后往前的反方向索引,第一个索引为-1,后面依次为-2、-3、-4、-5。
- 序列里面可以再嵌套序列,这叫作序列的嵌套。[1,2,3,[8,9,0],4,5]
- 我们可以使用索引来访问列表中的值,也可以使用中括号[]的形式来截取序列(切片)。
- 列表的截取又称作列表的切片,需要两个索引来确定切片的起始位置。注意:列表的切片不包含尾部索引对应元素的值。
序列的通用操作符
- len()返回序列元素的个数。如序列有嵌套,那么被嵌套的序列被看做一个整体来计算。
- in()检查元素是否包含在序列中。返回值True或者False,往往该命令结合条件语句使用。In不检查序列嵌套元素的值。
- max()找出序列中最大的值。如果序列内的元素为字符串时,会按照Unicode编码的顺序返回编码最大的元素。当序列内有数字又有其他类型的元素时,报错。
- min()找出序列中最小的值。其它同max()
- sum()序列求和运算。可以对全部有数字类型组成的序列进行求和。输出的结果为所有数字的和。
- 同一种序列可以进行加法运算,但是,这里的加法并不是数学中的加法,序列的加法相当于将两个序列结合在一起。
- 序列的乘法运算,但是,序列的乘法运算只能和正整数相乘,代表的是将该序列重复正整数次。
- 更新列表中的值。可以直接使用索引进行赋值。还可以利用切片技术,同时更新列表的多个值。
列表
列表元素的删除(列表赋值(a=b(b是列表名)),修改一个另一个也受影响)
- del 列表名[index]删除列表中指定索引的值,如果没有指定索引,则删除整个变量。
- pop()删除指定索引的元素,如果没有指定索引,则默认删除最后一个元素,会返回删除的元素,在原列表删除。(可用变量接收删除的元素)
- remove()移除列表里面第一次出现的指定值得元素。有时候需要删除某一个元素,但是不知道他在列表的位置,使用remove()最合适。
- clear()清除列表所有的元素,但不是删除列表,只是列表为空。
列表添加元素(a[4]=9如果索引4不存在会报错)
- append()将元素添加到列表末尾。List_name.append(obj)。obj代表插入的元素,可以是单个数据,也可以是列表,元组等。
- insert()将元素插入到指定的位置。List_name.insert(index,obj)。Index代表列表的索引,改参数只能为整数,obj代表需要插入的元素。
- extend():list1.extend(list2)合并两列表(合并至list1)
查找元素
- Index()查找元素在列表中的位置,返回值为该元素在列表中的索引。List_name.index(obj,start,end):obj查找的元素的值,start代表开始查找的位置,end代表结束的位置。start,end为非必选项,不写,代表在整个列表中查找。如果查找的元素不存在,则报错。
- count()统计某个元素在列表中出现的次数,返回值为该元素的个数。List_name.count(obj).obj需要统计的元素。查找元素不存在,返回0(零)。
- In() 元素 in 列表名 ,存在返回True,不存在False。
列表的排序
- sort():对原列表进行排序,不返回新列表。默认True从小到大排序。如果指定参数,则使用指定的比较函数进行排序。Sort(reverse=False)reverse:代表是否翻转,默认不翻转Fasle。例:reversr=True或者reversr=1,其工作原理是首先将列表按照从小到大的顺序进行排序,然后在进行翻转,这样就形成了从大到小的倒叙排序。
- sorted():对可迭代对象进行排序操作,会生成新的列表,原列表不改变。(reverse=False)reverse:代表是否翻转,默认不翻转Fasle。NewList = sorted(list,reverse=True)(默认从小到大)
- reverse()用于返向排列列表中的元素。并不是进行排序,而是将列表里的元素进行顺序上的前后颠倒。和sort()一样,都是在原列表中进行操作,改变原列表的值。
易错点
- 一个列表中的数据类型可以各不相同,可以同时分别为整数、字符串、列表、元组、字典以及其它自定义类型的对象。
- 在嵌套的列表中,被嵌套的列表被看做一个整体。
- 求序列最大、最小值,要求序列内所有元素必须同时为数字或字符串类型,不能混合、不能嵌套,否则报错。
- 只有纯数字类型的序列才可以进行求和运算。
- clear()和del()的区别:del()中,列表名是在后边的括号中;clear()中,列表是在clear()前面,并且用.隔开。其次,del()可以只删除一个元素,如果不指定索引,只注明列表名,则删除整个变量,索引,列表也就不存在了;而clear()是清除列表里的所有元素,列表还在,只是为空,此时列表长度为0。
- append()一次只能追加一个元素到列表里边,如果追加的是列表或者元组,则是作为一个整体进行追加。
- sorted()和sort()的区别:sorted()是Python的内置函数,可用于所有可迭代对象;而sort()是列表的内置函数,仅用于列表的排序。列表的sort()方法是对已经存在的列表进行操作,无返回值;而内置函数sorted()返回的是一个新的列表,而不是在原来的基础上进行操作,所以不改变原列表的值。
元组
不可变序列——元组(如果只有一个元素后面需要加逗号)
- 元组也是序列的一种,元组和列表不同之处有两点:一:元组的元素不能修改(删除、添加);二:元组使用小括号,列表使用中括号。
- 如何创建元组:一:在括号中添加元素,并使用逗号隔开。二:使用tuple()函数将其他数据类型(必须是可迭代对象)转换为元组。数字不能转。
- 元组访问:元组的访问需要借助索引,表示的方法和列表相同。索引可以为负数,为负数时,从-1开始。
- 元组的嵌套:元组嵌套的数据类型不仅仅局限于元组,列表以及字典等其他数据也可以。同样被嵌套的元素被看做一个整体。
- 元组截取:元组的截取和列表的截取相同,需要确定开始位置、结束位置、步长。包头不包尾。
其它操作:
len()获取元组长度
In()检查元素是否包含在元组中
Max()求最大值
Min()求最小值
Sum()求和运算
+:元组的加法运算。将两个元组结合在一起,形成一个新的元组,并不改变原来元组的值。
*:将元组的元素重复相应的次数。
不可变序列——元组的操作
- Index():查找元素在元组中的位置,返回值是该元素第一次出现的索引。元组名.index(需要查找的元素的值)
- count():查找元素在元组中的个数,返回值为整数。
- sorted():由于元组是不可变序列,所以无法使用sort()进行排序,但是可以使用sorted()进行排序。Python的内置函数。可用于所有可迭代对象,返回的是一个新的列表。
易错点:
- 如果元组中只有一个元素,仍然需要加逗号,否则该对象并非元组。
- 元组为不可变序列,所有列表的很多操作是无法在元组中使用的。
- 元组sorted()进行排序会生成一个新的列表,而不是元组。
字符串
- 创建:使用英文单引或者双引号
- 直接赋值 strs = “加油”
- 使用str()从其它类型转换
- 字符串访问:直接使用字符串变量名加索引。
- 字符串截取:使用字符串变量加索引的起点和终点,注意:不包含终点索引上的元素
- len()获取字符串长度
- In()检查某一个字符或者字符串是否包含在字符串中。
- Max()求字符串Unicode编码值最大的元素。Unicode编码的基本规律:数字在前面,接下来是大写字母,然后是小写字母,最后是中文等其他文字。
- Min()求字符串Unicode编码值最小的元素。
- +:连接作用
- Sorted()依然按照Unicode编码顺序排序。
- Index()查找某个元素的位置。使用方法同其他数据类型中的index,返回值为该元素的索引。没有就报错。
- count()查找某个字符或者字符串在整个字符串中出现的次数。
- 转义字符:有时候需要输出一些特殊字符,如:引号、索引、换行等,为了实现这些功能Python使用\反斜杠来表示。
例子:
\\ | 反斜杠 | print(‘\\’)输出:\ |
\’ | 单引号 | print(‘\’’)输出:’ |
\’’ | 双引号 | print(‘\’’’)输出:’’ |
\b | 退格符 | print(‘12\b3’)输出:12 3 |
\n | 换行 | print(‘12\n3’)输出:12 n |
*** 格式化输出 ***
- Python的格式化输出有两种:一种是%,一种是format(),f”{}”
- %格式化输出
%s | 格式化为整数,如果s前边有数字,则代表该整数所要占得位置 | Print(“这是第%s行”%3) 这是第3行 Print(“这是第%4s行”%3) 这是第 3行(3前边有3个空格) |
%f | 格式化为浮点数,如果f前面有数字,则代表保留小数精度。 | Print(“圆周率是%f”%3.141592654) 圆周率是3.141592 Print(“圆周率是%.2f”%3.141592654) 圆周率是3.141 |
%s | 格式化为字符串,如果前面有数字,则代表字符串长度 | Print(‘我的名字叫%s,我是%s年级’%(‘小明’,’‘2’)) 我的名字叫小明,我是2年级 |
- format格式化输出
第一种:使用索引位置格式 “{0:2f}”.format(6.666) 输出:6.67(会四舍五入)
第二张:使用命名方式,给每个需要格式化的位置命名,然后在format中进行变量赋值
字符串相关操作
- split() 字符串分割,将一个完整的字符串使用分割符分割成字符串列表。字符串转列表。(括号里不写整体转列表)
- Join()和split()功能相反,将列表结合为字符串。列表转字符串
“连接符”.join(列表名) (整型不能连接)
3.find()检测字符串中是否包含字符串,包含返回索引(第一个),不包含返回-1
易错点
- 字符串中的数字是字符串类型的,所以不能用sum()进行求和运算。
- 字符串中很多操作,比如检查是否在字符串中。字符串中某一个字符出现的次数等都要注意字符串要加引号,否则会认为是变量而不是字符串。
字典(字典是可变的无序集合)
字典指的是一种可变的容器类型,可以装任意类型对象,容器可以存储数据的地方。
字典是使用{}括起来,并且每一个元素由键和值两部分组成,键和值之间使用英文冒号:隔开,必须一一对应,所以又叫键值对,每个键值对之间必须使用英文逗号隔开。
字典的特征
键是字典中进行赋值和读取的重要标记,所以要求键必须唯一,并且是不可变序列(如果重复,取最后一个的值);值可以是其它任意数据类型,不要求具有唯一性。
字典并不是序列,所以没有顺序,也没有索引。
字典的相关操作
- 访问字典里的值:一 使用字典名加键进行访问:字典名[键名]
二 使用字典中的get()函数进行访问:字典名.get(键名)(没有键名 返回None,第二个参数可以定义没有该键时返回的值)
- 修改字典:
- 修改已有键的值:直接使用字典名加键的方式:字典名[键名] = 新值
- 给字典增添新的键值对:使用字典名加键的方式:字典名[新键名] = 新值
- 删除字典里面已有值:使用del()删除一个键值对。del 字典名[键]
- 清空字典里的值:clear()可以清空字典里所有值,使字典成为一个空字典。 字典名.clear()
- 获取字典的长度。len()字典中的键值对是按照一个元素对待的。
- 检查键是否在字典中:使用in可以检查键是否在字典中,存在True不存在False。in只检查键,不检查值。 ‘需要查找的键’ in 字典名
- 字典名.keys()取所有键
- 字典名.values()取所有值
- 字典名.items()取所有键和值
- dic1.update(dic2)把dic2的键值更新到dic1
字典易错点
- 字典的键具有唯一性,如果创建时同一键被赋值两次,则后一个值会取代前一个值成为键的值。
- 字典中的键必须不可变,所以可以使用数字、字符串、元组充当,而用列表就不行,会报错。
- 访问字典中没有的键会报错。
- 把键当做索引访问和使用get()函数访问的区别:get()函数可以自己定义没有该键时返回的值,如果没有自定义,则返回None,而另外一种方式会报错。
流程控制
- 分支结构又称为条件语句,条件语句的构成由if/elif/else组成。
- 条件语句可分为:单分支结构、二分支结构、多分支结构。
- 分支结构的嵌套又称为条件语句的嵌套,特征是一般由多层二分支或多分支结构嵌套在一起组合而成。
易错点
- 单分支结构适合只有一种情况的程序,分支之后的程序,无论条件是否成立,都会执行。
- else后面没有条件语句,但是依然需要加英文冒号。
- elif后面必须有条件语句,并且条件语句后面也需要加英文冒号。
- 嵌套分支一定要注意缩进,缩进的不同代表不同的嵌套层次。
循环结构
循环可分为两大类:条件循环(while)和遍历循环(for)
条件循环:指的是如果某个条件成立,则一直执行某个或者某些语句块,一般被重复执行的语句块称为循环体。
循环遍历:是序列中每个元素执行相关语句块的循环过程。把序列里边的元素一个一个取出,然后进行相关操作的过程。
break语句:循环的跳出 跳出当前while循环或for循环
continue语句:停止本轮循环,开启下轮循环
和break语句不同,continue语句并不会跳出循环,它只是停止当次循环,然后跳回循环开始位置,继续下次循环
range
range()的参数有3个,range(start,stop,step) 包头不包尾
start:开始位置,可选参数,如果没有,默认代表0开始
stop:结束位置,该参数为必须项
step:步长,可选项,如果没有,步长为1
range()一般和for循环结合使用,用于控制循环次数
易错点
- 循环也可以进行嵌套,嵌套的循环是作为一个整体参与循环,所以需要注意缩进。
- 无限循环一般采用while,只需要将while后的条件语句永久设置为True即可。
- 由于for循环遍历是有限次数循环,所以for循环可以改为while循环。
- range()采用“包头不包尾”的原则,包括开始参数的值,但不包括结束参数的值。
其它重点
- x,y = 12,5 等同于x = 12 y = 5
- 元组创建
- spilt()的使用
- 切片的使用。正负
- 切片可以进行赋值操作
- 索引
- 元组操作
- range()
- 列表的+法、*法
- 字典操作
- 程序设计三种基本结构:顺序结构、选择结构、循环结构
- 列表和元组可以互相嵌套