【python学习】python容器、对象、序列的小知识

2021/10/4 17:13:01

本文主要是介绍【python学习】python容器、对象、序列的小知识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

中国史之【行禅让】:
尧舜时期实行禅让制度。尧是黄帝以后比较著名的部落联盟首领,尧去世前,尧把部落联盟首领位置让于舜,推舜为帝。尧舜禅让时要经过“四岳十二牧”的同意,这种让位,历史上称为“禅让”。
-来源:全历史APP

今天讲python的容器、对象、序列的一些小知识。有需要的也可以直接去我的github查看全部笔记:
https://github.com/JackKoLing/python_notes_with_ten_days
在这里插入图片描述
俗话说:“好记性不如烂笔头”,多写写多记记,总不会错。多一些不为什么的坚持,少一些功利主义的追求。
对于环境的配置,可以参考以下两篇:

  • win10版 @小保,公众号:CV之道
    【深度学习环境配置】手把手实战配置深度学习环境(win10版)
  • Linux版 @小保,公众号:CV之道
    【深度学习环境配置】手把手实战配置深度学习环境(Ubuntu20.04版)。

1 容器

(1)容器概念:

容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中。

参考链接:
https://www.cnblogs.com/LaoYuanStudyPython/p/12950050.html

(2)相关知识:

  • 容器是一种可以包含其他类型对象(如列表、元组、字典等)作为元素的对象
  • 容器仅仅只是用来存放数据的,我们平常看到的 l = [1,2,3,4]等等,好像我们可以直接从列表这个容器中取出元素,但事实上容器并不提供这种能力,而是可迭代对象赋予了容器这种能力
  • 列表、元组、字典等容器可以在不使用续行符’'的操作下,直接分步写于多行。最后一个元素后面可以使用逗号,多一个逗号不影响。但是空元素不能使用逗号
l1 = [1,
2,
3,]
print(l1)
>>>
[1, 2, 3]

2 对象

(1)对象概念:

面向对象程序设计(OOP)以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。

(2)相关知识:

  • 对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。
  • 在python中,一个对象的特征也称为属性(attribute)。它所具有的行为也称为方法(method)。所以:对象=属性+方法。
  • 在python中,把具有相同属性和方法的对象归为一个类(class)。
  • 所有对象都有引用次数,如果为某个对象指定新名称,或者将对象放进一个容器时,都会导致其引用次数增加。当引用次数为0时,可以被垃圾回收机制回收。当删除引用对象时,引用次数会减一。
name = 'jackko'
import sys
print(sys.getrefcount(name)) # 显示对象的引用次数
hello = 'jackko'
print(sys.getrefcount(name)) # 增加引用次数
del(hello)
print(sys.getrefcount(name)) # 减少引用次数
>>>
3
4
3
  • Python中的所有对象都是“第一类”,这意味着使用标识符命名的所有对象都具有相同状态。于是,能够命名的所有对象都可以直接当数据进行处理
a = 4
b = 3
print(a / b) # 普通除法
print(a // b) # 整除
>>>
1.3333333333333333
1

(3)对于列表、字典,都支持两种类型的复制操作:

  • 浅复制:如l2 = l1,创建一个新对象,但包含的元素是l1对象的引用,所以指向同一个位置。l1改,l2就会修改
  • 深复制:如l2 = copy.deepcopy(l1)。创建一个新对象,并且递归复制l1中的所有对象。l1改,l2不会改
l1 = [1, 2, 3]
l2 = l1 # 浅复制
import copy
l3 = copy.deepcopy(l1) # 深复制
print(l2)
print(l3)
>>>
[1, 2, 3]
[1, 2, 3]

l1[2] = 4
print(l2) # 浅复制导致l2也会跟着改变
print(l3)
>>>
[1, 2, 4] 
[1, 2, 3]

3 序列

(1)序列概念:

  • 所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。
  • 为了更形象的认识序列,可以将它看做是一家旅店,那么店中的每个房间就如同序列存储数据的一个个内存空间,每个房间所特有的房间号就相当于索引值。也就是说,通过房间号(索引)我们可以找到这家旅店(序列)中的每个房间(内存空间)。
  • 在 Python 中,序列类型包括字符串、列表、元组、集合和字典。

参考:
http://c.biancheng.net/view/4312.html

(2)相关知识:

1)序列的特性:
  • 序列是索引为非负整数的有序对象集合,包括:字符串、列表、元组
  • 其中字符串和元组是不可变序列,而列表支持插入、删除和替换元素
  • 所有序列都支持迭代
  • 序列本身支持可修改,所以支持在原处进行插入、删除、替换等操作,但字符串和元组不支持
  • 列表和元组能包含任意的python对象序列,因为是容器。但字符串只能使用字符
2)所有序列都支持的操作和方法:
  • s[i]:索引运算符
  • s[i:j]为切片运算符,s[i:j:stride]为扩展切片运算符
  • len(s)长度
  • min(s)和max(s)只适用于能够对元素排序的序列
  • sum(s)只适用于数字序列
  • all(s)检查是否所有项为True
  • any(s)若元素都是 0、空、FALSE,则为False,其余都是TRUE
  • s1 + s2:连接
  • s1 * N:重复
  • obj in s1:成员关系判断
  • obj not in s1
3)可变序列的操作:
  • s1[index] = value 元素赋值
  • s1[i:j] = t 切片赋值
  • s1[i:j:stride] 扩展切片赋值
  • del s1[index]
  • del s1[i:j]
  • del s1[i:j:stride]

【声明】:学习笔记基于互联网上各种学习资源的个人整理。

以上是本期内容,下期介绍python的表达式、优先级等。

我叫小保,一名计算机视觉爱好者、学习者、追随者,欢迎关注我一起学习。



这篇关于【python学习】python容器、对象、序列的小知识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程