目录
1、python包含的内置序列2、使用内置的数据类型2.1创建2.2索引2.3使用for遍历3、可变与不可变4、小练习题前言:
python
之父Guido van Rossum
曾经参与过ABC语言的开发(不是参加了A语言、B语言和C语言的开发,ABC是一门单独的编程语言),后来他认为这门语言存在很多缺点,就创立了python语言。因此,python很多风格和ABC语言是有相似之处的。
今天笔记内容是流畅的python书籍的第二章,主要记录python内置序列类型的相关知识
本文重点就是分析数据类型的“继承关系”,也就是本文的标题上方的图片。
1、python包含的内置序列
初学python时有这样的疑惑:为什么书中一开始就讲解list、tuple、str的使用,而大一上C语言和C++课程时,都是先讲解链表的基本知识,讲地址和指针。
使用python的list动态添加和替换元素,甚至都不需要知道链表是如何遍历的,我觉得这就是python的哲学,在python中“import this”,可以看到开发者们提供了这样的一段话:
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
........
基于这样的想法,python提供了非常好用的数据结构:list
、tuple
、str
(列表,元组、字符串)等等。
2、使用内置的数据类型
2.1 创建
在python中创建某种数据结构也是非常简单的:创建string使用单引号或者双引号;创建tuple使用园括号;创建list使用方括号:
string_ = "there are" tuple_ = (1, 2, 3) list_ = [4, 5, 6]
由于list
、tuple
、string都是用来盛放数据的,所以我下文中统一称为“容器”。此外,也可以使用构造函数来创建它们:
string_ = str("there are") list_ = list([1, 2, 3]) tuple_ = tuple((4, 5, 6))
2.2 索引
想要获取容器中的某个值,可以采用索引的方式,比如想要获取某个list的最后一个元素:
list_ = [4, 5, 6]
print(list_[2])
输出:6
python中“-1”表示最后容器的最后一个元素:
list_ = [4, 5, 6] print(list_[-1])
输出:6
tuple
和string
的索引方式和list是相同的,不同之处在于元素是否可变,将会在下节指出。
2.3 使用for遍历
实现了迭代器协议__iter__()
的容器都可以使用for...in...
的形式来遍历其中的每一个元素:
tuple_ = (1, 2, 3) for tu in tuple_: print(tu) # 输出:1 2 3
list
和string
同理。
3、可变与不可变
我们知道,list
创建以后,可以动态的改变它的某个元素的值:
list_ = [4, 5, 6] list_[0] = 100 print(list_) # 输出:[100, 5, 6]
但是,tuple和string
一旦被创建以后,就不能改变它元素的值,强制修改会报错:
tuple_ = (1, 2, 3) tuple_[0] = 2
输出错误:
TypeError: "tuple" object does not support item assignment
重点来了,python的数据类型不仅仅前面介绍的3种,各种类型之间的相同和差异有哪些呢?
答:python将序列类型(容器)分为可变序列和不可变序列,我们可以通过“继承”关系区分二者功能上的相同点和差异,具体分类如下:
(1)可变序列(MutableSequence):list、bytearray、array.array、collections.deque、memoryview(2)不可变序列(Sequence):tuple、str、bytes下面的图形象的体现了二者的关系(根据书中画的):
可变序列是继承自不可变数据类型的,所以二者的共同点就是不可变类型包含的函数(比如index),区别就是可变序列新增的或者重载的函数(比如pop是可变序列独有的)。
4、小练习题
题目:实现一个函数,用于删除字符串最后的一个字母,可以返回新的字符串。比如给一个单词“here”,函数需要删除“e”,返回“her”。
实现如下:
def delete_last(word): new_word = word[0:-1] return new_word
测试一下:
word = "here" new_word = delete_last(word=word) print(new_word)
输出:her
也可以将str转为list,使用list.pop()删除最后一个字母,最后再转回str类型,但是比较麻烦。
到此这篇关于python内置数据类型使用方法和继承关系的文章就介绍到这了,更多相关python内置数据类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?