python4---序列和字典

一、序列:包含若干个元素, 元素有序排列, 可以通过下标访问到一个或者多个元素. 这样的对象, 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【深拷贝中一个对象的值改变了不会影响另一个对象】【前面值改变和后面的值没关系】 

链式赋值,实际上是创建一个字符串的值,拿进去引用

链式赋值,不存在赋值之后,不能发生改变:

赋值不涉及深浅拷贝,只是在内存中创建一个值,并进行引用。创建列表对象时,才涉及深浅拷贝,直接赋值不涉及。

猜你喜欢

转载自blog.csdn.net/xuruhua/article/details/81040129