Python基础与拾遗7:Python中的数据类型总结
作者:互联网
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
知彼知己,
纵横天下。
标签:False,Python,s2,数据类型,拾遗,bool,copy,True 来源: https://blog.csdn.net/jiongnima/article/details/113716622