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【深拷贝中一个对象的值改变了不会影响另一个对象】【前面值改变和后面的值没关系】 

 

 

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

 

 

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

 

 

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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuruhua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值