梳理Python基本认识基本类型,从零开始,学习Python,附教程分享
先罗列一下Python提供的基本数据类型:数值(整型、浮点型、复数、布尔型等)、字符串、列表、元组、字典、集合等,将它们简单分类如下:
字符串(String)
首先,我们定义一个s='python'语句,它在计算机中的执行顺序是先在内存中创建一个字符串python,在程序栈寄存器中创建一个变量s,最后把python的地址赋给s 。
再来看看字符串的一些常见操作
- 切片
- 替换
- 查找
find()
index()
- 转大小写
upper(),lower(),swapcase(),capitalize()
- 去空格,strip()、lstrip()、rstrip()
- 连接与分割
使用 + 连接字符串,每次操作会重新计算、开辟、释放内存,效率很低,所以推荐使用join
- 还有一些常用的,这里只列出来
以上是一些常见的操作,当然还有一个没有列出来,这里想单独拿来谈谈,就是 Python3 字符串的编码:
- ASCII 编码出现最早,只有大小写英文字母、数字和一些符号等127个字符,为了实现多语言表示,如中文的GB2312编码,日文的Shift_JIS编码等,Unicode 孕育而生,它将所有语言都统一到一套编码中;
- 在 Python3 中所有字符串在内存中均是 Unicode 保存;
- 当需要将文件保存到外设或进行网络传输时,就要进行编码转换,将字符转换为字节,以提高效率
在 Python3 中,内存中的 Unicode 字符用 str 对象表示,对应于的,Python3 使用了一种全新的数据类型来表示字节,就是 bytes,所以 encode 转换后的字节流就不是 str 对象,而是 bytes 字节对象,它当然支持分片、索引、基本数值运算等操作,但 str 与 bytes 类型的数据不能进行+操作。
来看看 bytes 数据类型的定义:
从上述例子中可以看出 bytes 对象不能由超出 ASCII 码范围的字符组成,只接受 ASCII 码这个范围的字符。
同样,从上面的例子我们还可以总结出一些坑爹的东西:
- Unicode 码在 Python3 中有两种表示方式,u'字符串'和\u四位十六进制数;区分r'字符串' ,是表示不转义的原始字符串
- 将字符直接以 Unicode 码保存使用unicode-escape
- 在 Python 的交互式环境中,输出 bytes 对象时,可按 ASCII 码表示,或按十六进制\x表示
- 在 Python 头声明#-- coding:utf-8 --,是告诉 Python 编译器按utf-8的方式读取,这个声明并不能将 Python 文件本身保存成utf-8,这时候需要借助文本编辑器保存文件编码。
编码部分我的理解就是这些了,感觉还是没有将编码问题总结清楚(无奈),还有什么补充的可以留言给小编
列表(List)
Python 可使用语法糖[]表示列表,其中的元素可以是任何类型,以顺序存储的方式动态储存数据:
元组(Tuple)
元组与列表不同的是,元组是不可变类型(immutable),不能对元素进行修改,但内存可以明确知道需要分配多少空间给元组
字典(Dictionaries)
字典是通过键值对的方式进行存储,占用大量的内存而获得极快的查找和插入速度,而列表刚好相反,查找和插入速度随着元素的增加而变慢,但占用的内存较小。字典虽然是可变类型,但因为它的 value 的位置是根据 key 计算出来的,因此 key 必须是不可变对象,这样才能确保字典的正确使用。
自定义数据类型
Python 允许通过继承去自定义数据类型,很多第三方库或框架都有类似的应用,这里简单实现了一个供参考: