脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - python内置数据类型使用方法和继承关系

python内置数据类型使用方法和继承关系

2022-10-29 12:12机器学习入坑者 Python

这篇文章主要介绍了python内置数据类型使用方法和继承关系,介绍内容有python包含的内置序列、使用内置的数据类型等相关资料,需要的小伙伴可以参考一下

python内置数据类型使用方法和继承关系

前言:

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提供了非常好用的数据结构:listtuplestr(列表,元组、字符串)等等。

2、使用内置的数据类型

2.1 创建

在python中创建某种数据结构也是非常简单的:创建string使用单引号或者双引号;创建tuple使用园括号;创建list使用方括号:

?
1
2
3
string_ = "there are"
tuple_ = (1, 2, 3)
list_ = [4, 5, 6]

由于listtuple、string都是用来盛放数据的,所以我下文中统一称为“容器”。此外,也可以使用构造函数来创建它们:

?
1
2
3
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”表示最后容器的最后一个元素:

?
1
2
list_ = [4, 5, 6]
print(list_[-1])

输出:6

tuplestring的索引方式和list是相同的,不同之处在于元素是否可变,将会在下节指出。

2.3 使用for遍历

实现了迭代器协议__iter__()的容器都可以使用for...in...的形式来遍历其中的每一个元素:

?
1
2
3
4
tuple_ = (1, 2, 3)
for tu in tuple_:
    print(tu)
# 输出:1 2 3 

liststring同理。

3、可变与不可变

我们知道,list创建以后,可以动态的改变它的某个元素的值:

?
1
2
3
4
list_ = [4, 5, 6]
list_[0] = 100
print(list_)
# 输出:[100, 5, 6]

但是,tuple和string一旦被创建以后,就不能改变它元素的值,强制修改会报错:

?
1
2
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

下面的图形象的体现了二者的关系(根据书中画的):

python内置数据类型使用方法和继承关系

可变序列是继承自不可变数据类型的,所以二者的共同点就是不可变类型包含的函数(比如index),区别就是可变序列新增的或者重载的函数(比如pop是可变序列独有的)。

4、小练习题

题目:实现一个函数,用于删除字符串最后的一个字母,可以返回新的字符串。比如给一个单词“here”,函数需要删除“e”,返回“her”。

实现如下:

?
1
2
3
def delete_last(word):
    new_word = word[0:-1]
    return new_word

测试一下:

?
1
2
3
word = "here"
new_word = delete_last(word=word)
print(new_word)

输出:her

也可以将str转为list,使用list.pop()删除最后一个字母,最后再转回str类型,但是比较麻烦。

到此这篇关于python内置数据类型使用方法和继承关系的文章就介绍到这了,更多相关python内置数据类型内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://zhuanlan.zhihu.com/p/90419510

延伸 · 阅读

精彩推荐
  • PythonPython浅拷贝与深拷贝用法实例

    Python浅拷贝与深拷贝用法实例

    这篇文章主要介绍了Python浅拷贝与深拷贝用法,实例分析了Python浅拷贝与深拷贝的功能与使用方法,需要的朋友可以参考下 ...

    Python教程网3602020-06-26
  • PythonOpenCV实现直线检测

    OpenCV实现直线检测

    这篇文章主要为大家详细介绍了OpenCV实现直线检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Robin Long 201810222022-08-01
  • Python在Python的Flask框架中实现全文搜索功能

    在Python的Flask框架中实现全文搜索功能

    这篇文章主要介绍了在Python的Flask框架中实现全文搜索功能,这个基本的web功能实现起来非常简单,需要的朋友可以参考下 ...

    脚本之家10922020-06-10
  • Python用Python一键搭建Http服务器的方法

    用Python一键搭建Http服务器的方法

    今天小编就为大家分享一篇用Python一键搭建Http服务器的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    墨染百城9452021-02-28
  • PythonPython数据库格式化输出文档的思路与方法

    Python数据库格式化输出文档的思路与方法

    这篇文章主要给大家介绍了关于Python数据库格式化输出文档的思路与方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习...

    善斋书屋9292021-09-18
  • Python简单介绍Python下自己编写web框架的一些要点

    简单介绍Python下自己编写web框架的一些要点

    这篇文章主要介绍了简单介绍Python下自己编写web框架的一些要点,示例代码基于Python2.x版本,需要的朋友可以参考下...

    廖雪峰4162020-06-18
  • PythonPython matplotlib可视化之绘制韦恩图

    Python matplotlib可视化之绘制韦恩图

    韦恩图可以清晰的反映不同组数据共有和各自独有的部分,本文将详细为大家介绍如下两种python绘制venn图策略:matplotlib_venn和pyvenn,需要的可以参考一下...

    qq_2147826111332022-10-13
  • PythonPython实现我的世界小游戏源代码

    Python实现我的世界小游戏源代码

    这篇文章主要介绍了Python实现我的世界小游戏源代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    Python代码狂人13442021-09-12