一、序列:包含若干个元素, 元素有序排列, 可以通过下标访问到一个或者多个元素. 这样的对象, Python中统一称为序列
(1)标准类型操作符
a、序列比较大小
字符串或元组或列表,比较是比较他们之中的每一个元素,每一个元素相等,则是相等的;任意有一个元素不相等,则是不相等的。【大于,小于是从第一个元素开始比较,找到第一个不相同的元素,判断这两个元素的大小,则这两个元素的大小决定了整个tuple或者list的大小】
b、少部分序列中保存的元素不支持标准类型操作符
ba、支持的:
bb、不支持的,少部分特例:
(2)序列类型操作符
A、连接操作符(+): 把两个相同类型的序列进行行连接.【列表/元组通过+可以拼接】
B、列表/元组通过*可以重复
C、查看一个对象在不在序列里,通过关键字in和not in【对于一个字符串,可以查看字符串里面是否包含一个子字符串(想要查的字符串是不是指定字符串的子集)】
ca、
cb、查看数字在不在列表里
说明了,一个数字在list中;list的子集[]不在list中。
但是如果原来的list中包含子list对象,则可以查询[]:
1、序列的切片操作
字符串/列表/元组都可以通过下标取值,不能去取长度之外的值;
(1)切片操作,填写两个数,构成前闭后开区间,对字符串取其子集[:]。步长为第三个参数,步长大于0,从前往后取;步长小于0,从后往前取,第一个参数代表了序列的最后一位,第二个参数代表了第-1位数。
a、从前往后打印:
b、从后往前打印,必须保证第一个参数在第二个参数后面,才能实现逆推:
2、序列内建函数
(1)max:返回序列的最大值
min:返回序列的最小值
同时也可以传字符串中的最大最小值,单个的字符在字符串中叫做元素,保存方式类似于数组。但是python没有字符类型
虽然可以比较字符串的大小,但是python中没有字符类型,其类型仍然是字符串类型
(2)sum:求和(打印类型时,如实反映加起来之和的类型,如果加起来是浮点型,则返回浮点型)
不能给字符串求和
(3)enumerate遍历序列,返回下标值
结果说明:返回时返回的元组,前面的表示下标,后面的表示值。
用两个变量接收;
可以使用下划线占位,只显示下标或者是值
也可以Find通过函数,找到下标【Find函数,查找指定元素在序列里的下标】
(4)zip函数,进行行列互换
a、把list转换后变成了元组
b、元素数不同:取最小list中元素的个数
c、构造字典
转换成dict
使用dict时,必须保证里面的每一个元素的键值对是一一对应的,不能出现单个的元素(单个的元素不符合需求)。dict函数避免了键值对不成对出现的情况,转换出的每一个元素都包含两个。dict函数一旦有一个元素不是键值对就会报错。
二、字符串:
1、三种引号的区别:
a、Python中单引号(')字符串和双引号(")字符串是等价的. 而不像有些编程语言(比如Linux Shell), 转义字符只在双引号中有效.
b、Python中使用 "原始字符串" 来完成这样的功能
c、三引号('''/""")相比于前两种的区别是, 可以跨多行.
2、字符串是不可变对象:
(1)不能修改字符串,只能创建新的字符串
(2)实现将a替换进字符串的功能的正确方式
这种方式也是在生成新的字符串,而不是改字符串的值
3、字符串的格式化:%代表传的值的类型
4、原始字符串(raw strings):不希望转义字符中的字符被转义,希望使用原始字符串[在字符串的前面加上r]
5、repr()函数,接收字符串转换为字符串
虽然str和repr的精度都有限制,但是str的精度比repr的精度小
repr读完数据后更多的是给解释器去读的,打印出的字符串被‘’引起来;而str打印的字符串是直接给大家看的
6、join拼接函数
a、拼接式用法:
b、不拼接,只是连接起来
c、只是把字符串串起来,不使用下划线
7、分割函数split()
以空格为单位,切分为list
以字符串为分割切分
8、判断字符串的开头和结尾startswith和endwith
9、strip()去掉字符串开头和结尾的空格和制表符
10、左对齐/右对齐/中间对齐 ljust/rjust/center
保证左对齐,右对齐或中对齐的情况下,如果位数不够,则进行扩充
11、查找字符串find()方法:接收字符串,查找字符串在目标字符串中的位置。查找字符串第一个元素在字符串中的下标;不存在的情况下会返回-1.
12、替换函数:replace():第一个参数为要替换的子集,第二个参数为拿什么去替换
字符串是不可变对象,替换实际上是产生新的字符串
三、列表
1、python中没有结束字符\0
2、append: 追加元素(在列的最后追加元素)
3、remove 删除元素,参数是要删除元素的值
4、del是一个关键字,删除指定下标的元素
4、extend()拼接两个序列
a、查看id有没有变化
结果没有变化,说明相当于+=,没有生成新的对象
b、使用+,打印id,查看地址有没有发生变化
结果中地址发生了改变,说明生成了新的对象
c、列表中的sort()函数:跟在某个可迭代对象后面,是一种排序的方法。
sorted函数创建了一个新的列表(产生了一个新的有序的序列),sort函数是基于列表本身进行的排序(类似归并排序的衍生算法)
5、pop()函数:删除并返回指定位置的对象,默认是最后一个对象。传位置就删除指定位置处的元素
四、基于列表的堆栈(后进先出)
append()放入一个元素,pop()删除一个元素
六、基于列表的队列(先进先出)
七、列表的深拷贝/浅拷贝
1、浅拷贝【拷贝之前的值改变,拷贝之后的值也会发生改变】【在内存中指向同样的一个东西】
打印的id相同,对象存在的基础上去引用相当于给对象贴标签,id不会发生改变。看似把a赋值给b,实际上a和b指向同一个东西,这就叫做浅拷贝。
改变值,结果不会发生改变
2、深拷贝:不是同一个id【深拷贝中一个对象的值改变了不会影响另一个对象】【前面值改变和后面的值没关系】
链式赋值,实际上是创建一个字符串的值,拿进去引用
链式赋值,不存在赋值之后,不能发生改变:
赋值不涉及深浅拷贝,只是在内存中创建一个值,并进行引用。创建列表对象时,才涉及深浅拷贝,直接赋值不涉及。