Python基础与拾遗7:Python中的数据类型总结
本篇博文,主要总结Python中的数据类型与注意事项,下面开始干货。
数据类型总结
| 对象类型 | 分类 | 是否可变 |
|---|---|---|
| 数字 | 数值 | 否 |
| 字符串 | 序列 | 否 |
| 列表 | 序列 | 是 |
| 字典 | 对应 | 是 |
| 元组 | 序列 | 否 |
| 文件 | 扩展 | 是 |
| set | 集合 | 是 |
| frozenset | 集合 | 否 |
| bytearray(Python 3.0及之后的版本中) | 序列 | 是 |
- 列表,字典和元组可以包含任何种类的对象。
- 列表,字典和元组可以任意嵌套。
- 列表和字典可以动态地扩大和缩小。
- 内置函数type可以用于判断类型。类型共有dict, list, str, tuple, int, float, complex, byte, type, set和file几种。
注意,类型本身在Python中也是对象类型。
type(type) <class 'type'>
对象的复制
- 没有限制条件的分片表达式(L[:])能够复制没有嵌套的序列。
a = [1, 2, 3]
b = a[:]
b[0] = 0 # [0, 2, 3]
a # [1, 2, 3]
a = [1, 2, [3, 4, 5]]
b = a[:]
b[2][0] = 0 # [1, 2, [0, 4, 5]]
a # [1, 2, [0, 4, 5]]
- 字典copy方法(X.copy())可以复制字典。
a = {'a': 1, 'b': 2}
b = a.copy()
b['a'] = 0
a # {'a': 1, 'b': 2}
b # {'a': 0, 'b': 2}
- 有些内置函数(如list)可以生成拷贝(list(L))。
a = [1, 2, 3]
b = list(a)
b[0] = 0
a # [1, 2, 3]
b # [0, 2, 3]
- copy标准库模块能够生成完整拷贝。注意:无条件值的分片以及字典copy方法只能做顶层复制。也就是说,不能复制嵌套的数据结构。若需要一个深层嵌套的数据结构的完整的、完全独立的拷贝,需要import copy,并采用深复制(如果是浅复制达不到嵌套内容复制的目的)。
import copy
a = [1, 2, [3, 4, 5]]
b = copy.copy(a)
b[2][0] = 0 # [1, 2, [0, 4, 5]]
a # [1, 2, [0, 4, 5]]
a = [1, 2, [3, 4, 5]]
b = copy.deepcopy(a)
b[2][0] = 0 # [1, 2, [0, 4, 5]]
a # [1, 2, [3, 4, 5]]
比较,相等性和真值
- "=="操作符测试值的相等性。可以递归地比较所有内嵌对象。
- "is"表达式测试对象的一致性。测试二者是否为同一个对象(是否在同一个内存地址中)。在这里尤其注意长短字符串的例子。
s1 = 'hello'
s2 = 'hello'
s1 == s2, s1 is s2 # (True, True)
s1 = 'hello moto'
s2 = 'hello moto'
s1 == s2, s1 is s2 # (True, False)
Python中的真与假
- 数字如果非零,就为真。
bool(0) # False
bool(-1) # True
bool(1) # True
- 其他对象如果非空,则为真。
| 对象 | 值 |
|---|---|
| “a” | True |
| “” | False |
| [] | False |
| {} | False |
| 1 | True |
| 0.0 | False |
| None | False |
- None一般起到一个空的占位符的作用。
l = [1, 2, None, 3]
len(l) # 4
l[2] # 无输出
- 内置函数bool可以测试对象的布尔值,输出True/False。
bool(“”) # False
bool([]) # False
bool(0.000000000000000000000000000000000000000001) # True
bool(bool) # True
以上,欢迎各位读者朋友提出意见或建议。
欢迎阅读笔者后续博客,各位读者朋友的支持与鼓励是我最大的动力!
written by jiong
知彼知己,
纵横天下。

本文深入探讨了Python中的数据类型,包括数字、字符串、列表、字典、元组等,强调了它们的可变性。同时,详细阐述了对象复制的不同方法,如切片、字典的copy方法、内置函数list以及使用copy模块的深复制。此外,还介绍了对象的比较、相等性和真值测试,以及Python中非零数字被视为真这一特性。最后,讨论了None在布尔上下文中的作用及其与空字符串、空列表和空字典在布尔转换中的区别。

2516

被折叠的 条评论
为什么被折叠?



