前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python数据结构

Python数据结构

作者头像
爱编程的小明
发布2022-09-06 14:26:56
4850
发布2022-09-06 14:26:56
举报
文章被收录于专栏:小明的博客小明的博客

数据类型

1658416662523
1658416662523

一般来说读写数据常常涉及的两种数据类型是文本数据与二进制数据(图片、语音),Python中对于这两大类数据的操作主要使用其内置的两种数据类型——字符串与字节数组: 字节数组: 8 比特整数组成的序列,用于存储二进制数据。 字符串: Unicode 字符组成的序列,用于存储文本数据

字节 & 字节数组

  • 字节是不可变的,像字节数据组成的元组;
  • 字节数组是可变的,像字节数据组成的列表。 bytes 类型值的表示形式比较特殊:以 b 开头,接着是一个单引号,后面跟着由十六进制数(例如 \x02)或 ASCII 码组成的序列,最后以配对的单引号结束。
代码语言:javascript
复制
a = [1, 2, 1, 3]
print(bytes(a))
b=bytearray(a)
print(b)
b.append(3)
print(b)

字符串

Unicode

Unicode编码是一种国际化的编码方式,存储在其中的每一个字符都有自己独特的名字(帮助理解的标准名称)和标识数(Unicode ID)。 在Python中,我们如果知道某个字符的的Unicode ID那么就可以通过字符串的形式来引用该字符,一般有两种写法:

  • \u后跟四个十六进制的数字来确定所找字符在Unicode前256个平面(多语言基本平面)中所在平面以及所在平面上的具有位置,
  • \U后跟8个十六进制数字来表示字符在Unicode中的位置。

另外在Python中每一个字符的Unicode ID和标准名称(在Python中所有字母全大写)可以相互转化,主要借助unicodedata中的两个方法:

  • lookup(name)返回一个Unicode 字符
  • name()返回一个Unicode字符的标准化名称,我们也可以通过\N{name}的方式引用某个字符
代码语言:javascript
复制
name('$')
lookup('DOLLAR SIGN')
print('\N{DOLLAR SIGN}')
print('\u0024')
print('\U00000024')

字符串函数 len 可以计算字符串中 Unicode 字符的个数,而不是字节数:

代码语言:javascript
复制
>>> len('$')
1
>>> len('\U0001f47b')
1

Python 3 中的字符串是 Unicode 字符串而不是字节数组。这是与 Python 2 相比最大的差别。 在 Python 2 中,我们需要区分普通的以字节为单位的字符串以及 Unicode 字符串。

utf-8

Unicode解决了字符串到字节的编码(encode)问题,但也增大了存储和传输的成本。我们希望重新设计字节到字符串的解码(decode)来降低存储成本,于是UTF-8就诞生了! 为了解决这个问题,我们设计了一种可以变长度的 UTF-8 编码,用一个字节存储英文单词,三个字节存储汉字。这种编码模式对于中英混排的文件有很好的应用效果,但是变长度的编码模式会给代码的运行带来极大困难,因此一种比较好的解决方式是用 Unicode 编码来运行代码,用 UTF-8 进行存储。 python 在读文件后会自动将文件转为 Unicode 编码,unicode 字符串会被自动解码。

UTF-8 是 Python、 Linux 以及 HTML 的标准文本编码格式。这种编码方式简单快速、字符覆盖面广、出错率低。在代码中全都使用 UTF-8 编码会是一种非常棒的体验,你再也不需要不停地转化各种编码格式。

1658418562300
1658418562300
代码语言:javascript
复制
from unicodedata import name
#unicodedata.lookup()接受标准名称返回unicode编码字符
#unicodedata.name()接收Unicode编码字符,返回大写的标准名称
print(name('A'))
#################不同编码格式的转换###########
snowman = '\u2603'#自动识别为unicode字符串
print(len(snowman))
y=snowman.encode('utf-8')
print(y)
print(len(y))
print(snowman)#解码,但需要注意的是编码方式的差异可能会导致解码异常(解出非预期值或者直接报错)

encode()&decode()

解码一般指将字节序列转化为 Unicode 字符串的过程。 编码是将字符串转化为一系列字节的过程。

1658418847127
1658418847127

%r 和%s 的区别

%r 用rper()方法处理对象,%s 用str()方法处理对象 使用%r 打印时时我们能看到它所代表的对象(rper() unambiguously recreate the object it represents)

代码语言:javascript
复制
   import datetime
d = datetime.date.today()
print "%s" % d
print "%r" % d

内置处理函数

python 内置的字符串处理方法:

  • count
  • 查询函数
    • in
    • str.index(a):返回字符串 a 在 str 中的查询结果(查不到会报错
    • str.find(a:查不到返回-1
    • str.rfind:返回最后一次出现的查询字符串第一个字母的位置
  • replace:

列表

元组

命名元组

python 提供了一种命名元组的方法来对元组的空间进行划分,能够实现类似于类的实例化后的属性的功能。

image.png
image.png

字典

字典的按键排序(OrderdDict())

image.png
image.png

缺失键处理(默认键设定)

在对字典的值进行查询时,如果查询的键不存在时会返回一个默认值防止异常值发生:

  • get 会返回一个默认值但不会添加不存在的键
  • setdefault()会把新的默认值添加进去
  • defaultdict():传入参数是一个函数,返回赋给缺失键的值。

可以便捷地对创建字典初始化

image.png
image.png

集合

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据类型
    • 字节 & 字节数组
      • 字符串
        • Unicode
        • encode()&decode()
        • %r 和%s 的区别
        • 内置处理函数
      • 列表
        • 元组
          • 命名元组
        • 字典
          • 字典的按键排序(OrderdDict())
          • 缺失键处理(默认键设定)
        • 集合
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档