内置对象类型

本文深入探讨了Python编程的基础,包括对象、类、内置对象类型和内置对象的概念。点外卖程序涉及的要素包括订单、菜品和配送。Python中的对象具有特性,如整数和浮点数。变量与对象的关系是引用,对象有类型,变量无类型。字符串涉及字符编码、操作和格式化输出。列表、元组和字典是重要的数据结构,分别介绍了它们的创建、操作和方法。集合则强调其互异性与无序性。此外,文章还讲解了浅拷贝和深拷贝的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

初步了解对象

Python研究什么?
比如:要写一个点外卖的程序,这个现实问题涉及哪些要素?
如果把上述的要素描述清楚,就如同制造了三个模型,剩下的事情只需要把三个模型组合起来,就能实现“点外卖”了。
因此,Python研究的是要素,并把这些要素统一命名为“对象”,即Python认为,“世界是由对象组成的”。
涉及的概念:对象、类、内置对象类型、内置对象
对象的特征?

数字

整数(integer)

在这里插入图片描述
分解type(3)的使用方式
在这里插入图片描述

查看文档

“内置函数”的所有使用方法都在Python帮助文档中,阅读的方式有两种:
一是访问官方网站:https://docs.python.org/3/library/functions.html

在这里插入图片描述
二是使用内置函数help。
在这里插入图片描述
当阅读完文档内容,按键盘上的q键,就退回到交互模式。

浮点数(float)

在这里插入图片描述
为什么叫浮点数而非小数呢?

在这里插入图片描述
观察上面的操作,能得到什么结论?
1.int函数的作用是什么?
2.float函数的作用?
3.整数类型的对象3和浮点数类型的对象3.0是同一个数吗?
Python中,两个对象是否为“同一个”有严格的判断标准,就是看它们的内存地址是否相同。查看对象内存地址的方式是使用内置函数id。
综合上述:int和float除了表示类型和类别,还能够实现对象的类型转化。

变量

在这里插入图片描述
在“x = 5”中,x是变量,5是整数类型的对象,通过“ = ”把x和5建立了一种关系。
在这里插入图片描述
以上操作并没有规定变量x必须跟什么类型的对象建立关系,也没有规定变量x是什么类型,而是用“ = ”实现关系的建立,这种关系被称为“引用”,即变量x与对象5建立了“引用关系”。可以把“对象”想象成某个实在的物体,而变量就是一枚标签。标签不需要有什么类型之分,只要有不同的名字即可。没有给变量x规定某种对象类型,这是Python的一个重要观点:对象有类型,变量无类型。变量没有类型,不能被称为对象,所以无法独立存在。
在这里插入图片描述
在这里插入图片描述
变量命名的基本规则?

在这里插入图片描述
不合法的变量命名
在这里插入图片描述

简单的计算

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字符串

字符编码

ord():查看字符编码的十进制表示
在这里插入图片描述
bin():查看十进制数字对应的二进制数字
在这里插入图片描述
查看默认编码方式
在这里插入图片描述

在这里插入图片描述
chr():字符编码转化为字符
在这里插入图片描述
在这里插入图片描述

认识字符串(string)

字符串:在Python中就是用单引号或双引号包裹着的若干字符在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
出现了SyntaxError(语法错误)引导的提示,错误的类型是SyntaxError,后面是对这种错误解释:“invalid syntax”(无效的语法)。
print()函数可能语法错误的解决办法:
1.双引号和单引号的嵌套
在这里插入图片描述
2.使用“转义符”
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
第二句中的符号“\”将本来是字母n的含义转换,与“\”符号一同组成了“\n”,其含义是换行,因此出现了第二句的操作结果。
在这里插入图片描述
转义字符及其说明
在这里插入图片描述
“\”的用法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
由r开头引起的字符串就是“原始字符串”,在里面放任何字符都是该字符的原始含义。

练习1:在交互模式中,用print函数打印苏轼的词《江城子.密州出猎》,要求每句占一行。

字符串基本操作

在这里插入图片描述
字符串的元素必须按照特定顺序排列,这样的对象称为“序列”。

1.“ + ”:连接序列

“ + ”的作用是将字符串连接起来,并得到一个新的字符串。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:“ + ”连接的对象必须是同种类型,否则报错。
在这里插入图片描述

2.“ * ”:重复元素

“ * ”的作用是获得重复的元素
在这里插入图片描述

3.len函数:求序列长度

len函数的作用是得到序列类对象的长度
在这里插入图片描述
注意:不要漏掉空格
在这里插入图片描述

4.in:判断元素是否存在其中

in的作用是判断字符串这个容器是否存在某个元素
在这里插入图片描述

索引和切片

字符串中每个字符都是按特定的顺序排列的,不能随意更改位置。因此,可以对每个字符进行编辑。记录位置的编号称为“索引”。

1.索引

字符串中的索引
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.切片

在这里插入图片描述
切片:从字符串中得到多个字符。规则:前包括,后不包括。
在这里插入图片描述
在这里插入图片描述
“切片”是比照着索引在原字符串中所对应的字符,重新创建了一个字符串对象。
切片表达式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
练习2:对字符串“123456789”,通过切片操作得到如下结果“
得到”2468“
得到”1234“
得到”963“在这里插入图片描述

得到”69“
得到”987654321“

键盘输入

Python提供了内置函数input,用于接收用户通过键盘输入的信息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
练习3:编写一段程序,实现如下功能:
(1)询问姓名和年龄
(2)计算10年之后的年龄
(3)打印出所输入的姓名和当前年龄、10年之后的年龄。

字符串的方法

在这里插入图片描述
有两类:一类是名称以双下划线开始和结尾的,称为”特殊方法“和”特殊属性“;另一类是普通名称。其调用的方式和函数一样。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.“is”开头的方法

在这里插入图片描述

2.分隔和组合

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字符串格式化输出

在这里插入图片描述

format()方法使用解析
在这里插入图片描述
在这里插入图片描述

{0:10}表示该位置有10个字符,并且放在这个位置的字符是左对齐;{1:>15}表示该位置有15个字符,并且放在这个位置的字符是右对齐;{0:^10} 和
{1:^15}则表示字符串在该位置的对齐方式是居中。
在这里插入图片描述
{0:.2}中的“.2”表示对于传入的字符串,截取前两个字符。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
{0:04d}和{1:06.1f}表示在该处位置的空位用0填充。
在这里插入图片描述
练习4:字符串有format方法,内置函数中也有format方法。用示例说明内置函数format()的使用方法。

列表

列表(list)是Python的一个内置对象(或者对象类型),记住一个顺口溜:列表是个筐,什么都能装。

创建列表

Python中的列表可以用[ ]表示,是完全人为定义的对象类型。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过dir(list)查看列表的属性和方法,与字符串的属性的方法相比,发现它们有相同的方法,如index(),而且作用一样。

索引和切片

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
列表的独特操作
在这里插入图片描述
在这里插入图片描述
列表创建后,可以进行修改,而字符串不能修改。
练习5:有列表[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’],将列表翻转,并把其中的元音字母’e‘转换为100.

列表的基本操作

列表也是一种序列,所以同样可以实施其中的各项操作。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

列表的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.增加列表的元素

append()、extend()、insert()
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
append()方法是队列表从尾部(通常以列表地左端为开始,右端为尾部)追加一个元素。
一个列表对象,其元素变化了,但列表对象的内存地址没有变化,也就是没有生成新的列表,这种现象可以被称为“原地修改”。如果把列表看作一个容器,可以形象地理解为容器内地东西变化了,但是容器还是原来地容器。
在这里插入图片描述
列表地insert()方法实现了在列表任何位置插入对象地操作,依然是原地修改。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
extend()方法,其参数要求传入的对象必须是iterable–可迭代对象。字符串和列表都是可迭代的。
③的效果是将列表lst中的所有元素加入到cities中,即让cities扩容。
在这里插入图片描述
④将参数换成了另一个可迭代对象–字符串"py"。注意查看最终的结果,将字符串的元素(即每个字符)加入到cities列表中。
在这里插入图片描述
如何判断一个对象是不是可迭代的?
在这里插入图片描述

在这里插入图片描述
内置函数hasattr判断一个字符串是否是可迭代的,返回了True。
hasattr函数的判断本质就是看类型中是否有__iter__()这个特殊方法。可以用dir函数找一找,在数字、字符串、列表中,哪些有__iter__()。
在这里插入图片描述
③和⑤的操作结果可见append()与extend()方法的区别。

2.删除列表的元素

remove()、pop()
从帮助文档显示,两个方法的调用方式分别是L.remove(x)、L.pop([index])。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这里没有提供任何参数,即pop()方法的参数列表为空,则删除列表的最后一个元素,并且将删除的元素作为结果返回。注意,它有返回值。
在这里插入图片描述
如果参数不为空,可以删除指定索引的元素,并将该元素作为返回值。
总结: L.remove(x)中的参数x是列表的元素,即删除某个元素,且对列表原地修改,无返回值。L.pop([index])中的index是列表中元素的索引值,可选。“为空”则删除列表最后一个,否则删除索引为index的元素,并且将删除元素作为返回值。
除了remove()和pop(),列表中还有一个方法,名为clear(),它的作用是将列表中元素“清扫干净”,只剩一个空列表。
在这里插入图片描述
在这里插入图片描述
执行列表的clear()方法后,当前列表变成了空列表。但是内存地址没有改变,“容器”中没有任何东西,“容器”中没有任何东西,“容器”并没有因此变化,还是原来的“容器”。
在这里插入图片描述
这里的temp变量先后引用了两个不同的对象,对此处操作的理解是“变量”与“对象”的引用关系。

3.列表元素的排序

sort()
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
sorted函数排序后,得到一个新的列表对象,原列表没有变化。
在这里插入图片描述
sort()方法进行排序结果一样,但是列表lst被原地修改了。

4.列表元素的反转

在这里插入图片描述
在这里插入图片描述
依然是原地修改,它没有返回值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

练习6:将字符串“Python”转化为列表(记为lst),并将”rust“中的每个字符作为一个独立元素追加到列表lst中,然后将重复的元素全部删除。

元组

元组和列表很相似,从外表看差别就在于[ ]和( )。
在这里插入图片描述
元组是用圆括号括起来的,其中的元素之间用逗号隔开。元组中的元素是任意类型的Python对象。
在这里插入图片描述
切片
在这里插入图片描述
基本操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字典

“映射”是一种常见的关系,比如身份证和个人之间的映射关系。
在这里插入图片描述
在这里插入图片描述

一.创建字典

方法1:使用dict函数创建
在这里插入图片描述
①创建了一个空字典
如果创建非空字典,必须在参数中声明对应关系。
在这里插入图片描述
所创建的字典返回值,是用“{ }”包裹的对象

方法2:使用{ }创建
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在一个字典中,“键”必须满足如下条件:①唯一的,不能重复;②必须是不可变对象。而值可以重复,也可以是任何类型的对象。
在这里插入图片描述
字典是否是序列?

练习7:分别以字符串、整数、列表、元组、字典类型的对象为键,创建字典,观察得到的结果。

二.字典的基本操作

1.len(d) : 返回字典d中的键值对的数量。

在这里插入图片描述

2.d[key] : 返回字典d中的键key的值。

对于序列,通过索引能够得到序列中的元素。在字典中没有索引,只有键值对,可以通过键得到相应的值。
在这里插入图片描述
基本做法还是通过字典对象的"[ ]"符号,里面是键,返回相应的值。

3.d[key] = value : 将值value赋给字典d中的键key。

在这里插入图片描述
在这里插入图片描述
这个操作并没有生成新的字典,而是在原有字典中增加了新的键值对,这说明字典是可以“原地修改”的。

4.del d[key] : 删除字典d的键key项(将该键值对删除)。

在字典中,键值对是以键为代表的,通过del d[key]这种方式能够将该键值对删除。
在这里插入图片描述

5.key in d : 检查字典d中是否含有键为key的项。

在这里插入图片描述
练习8:检查某个对象是否在字典的值中,如检查字符串"python"是否是字典{‘lang’:‘python’,‘publisher’:‘phei’,‘price’:1}的键/值对的值。
在这里插入图片描述

三.字典的方法

1.读取值的方法

get()
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

setdefault()
在这里插入图片描述
在这里插入图片描述
③不仅返回了参数d引用的字符串,还把③中的两个参数作为一组键值对增加到原字典d中。如果没有参数d,也会增加一个键值对:
在这里插入图片描述

2.视图对象

keys()、values()、items()
在这里插入图片描述
以上得到的不是之前学过的列表,在Python中称之为“视图对象”。
在这里插入图片描述
④删除了一个键值对后,视图对象也动态变化,反映字典的变化。通过⑤查看,并没有执行d.keys(),视图对象中也没有了被删除的键。
在这里插入图片描述
k_lst是内存中的一个列表对象,它就不能动态反映字典的变化了。

3.增加键值对

update()
在这里插入图片描述
在这里插入图片描述
⑥中的参数就是一组映射关系,而表达映射关系是字典的本质。
在这里插入图片描述

4.删除键值对

del d[k]、pop()、popitem()、clear()、del d
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
练习9:利用字典的方法,优化练习8的操作。
练习10:将下列两个字典合并:{1:2, 2:3, 3:4}, {2:200, 3:300, 4:400}。

四.浅拷贝和深拷贝

copy()
列表:L.copy() -> list – a shallow copy of L。
字典:D.copy() -> dict – a shallow copy of D。
集合:L.copy() -> Return a shallow copy of a set。
这三种对象都是“容器”,并且是可变对象,可以实现原地修改。可以形象地理解为“容器”中的“东西”可以增加或减少,但是“容器”不变。
在这里插入图片描述
①的作用是变量book2引用了book1所引用的对象。
②中的is用于判断两对象是否为同一个,即id函数得到的内存地址是否一样。此处返回值True说明是同一对象。
③是检验两个对象内容是否一致,既然是同一个对象,那么返回肯定是True。
在这里插入图片描述

1.浅拷贝

在这里插入图片描述
book3和book1不再是同一个对象了,但是它们的内容依然一样,即book3是根据book1的内容在内存中新建了一个对象。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
④被称为“列表解析”,这里用④得到了book1和book3中每个元素的内存地址,虽然book1和book3是两个不同对象,但是它们的每个元素都是同一个对象。
在这里插入图片描述
可见,“浅拷贝”就是新建一个容器对象,但是容器中的子对象还是引用原容器中的,实质上只复制了一层。
在这里插入图片描述
在这里插入图片描述
⑤修改了book3中的一个元素,这个元素是不可变对象,而book1中该位置所引用的对象并没有因为⑤操作而受到影响
在这里插入图片描述
⑥的对象book3[2]是一个列表,列表是可变对象–可以原地修改,实施了⑥之后,对原列表对象进行修改。
在这里插入图片描述

2.深拷贝

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
“深拷贝”不但新建了一个容器对象,而且容器中的容器元素也新建了,可以理解为深拷贝就是复制过程的递归。
在这里插入图片描述
⑦执行后,book1和book4自然两不相干。
在这里插入图片描述
***总结:***不论深拷贝还是浅拷贝,使用对象是可变的容器对象,对数字、字符串等没有“拷贝”操作。

集合

一.创建集合

在Python中用“set”表示集合或者集合类型,也可以创建相应的对象。

在这里插入图片描述
创建集合时,set函数的参数必须是可迭代的。
①中的参数是一个列表(可迭代对象),列表中的元素本来有重复,但创建了集合之后,这个集合中的元素就不存在重复的,即“互异性”的体现。
在这里插入图片描述
使用dir函数查看集合的属性,没有index方法,说明没有索引,集合不是序列,即“无序性”的体现
在这里插入图片描述
集合也是用“{ }”包裹,与字典一致,也可以直接使用“{ }”创建集合。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分别用两种创建集合的方法创建集合都报错,报错信息都有“unhashable”,意思是“不可散列的”,而可变对象都属于“不可散列的”类型。再看集合中的元素,因为要求必须是“确定性”的,所以元素必须是不可变类型的对象,即unhashable,否则创建的时候会抛出TypeError。

二.集合的方法

1.增加元素

add()、update()
在这里插入图片描述
在这里插入图片描述
添加新元素以后,集合的内存地址是否变化?说明什么?

在这里插入图片描述
在这里插入图片描述

2.删除元素

pop()、remove()、discard()、clear()
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三.不变的集合

frozenset()
在这里插入图片描述
在这里插入图片描述
练习11:是否可以用集合作为字典的键

四.集合的关系和运算

1.元素与集合的关系

在这里插入图片描述
在这里插入图片描述

2.集合与集合的关系

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.集合间的运算

(1)并集
A与B的并集即可得到一个新的集合,包含了A、B的所有元素。
在这里插入图片描述
在这里插入图片描述
可以使用运算符号“|”,也可以使用方法union()。

(2)交集
A与B的交集即新集合包含A、B共有的元素。
在这里插入图片描述
在这里插入图片描述
交集的运算符号是“&”,方法为intersection()。

(3)差集
A相对B的差集即新的集合元素是A相对B不同的部分元素。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)对称差集
在这里插入图片描述
在这里插入图片描述

练习12:找出以下两个字典共有的键:{“a”:1, “b”:2, “c”:3, “d”:4}、{“b”:22, “d”:44, “e”:55, “f”:77}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

juicy-hua

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

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

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

打赏作者

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

抵扣说明:

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

余额充值