1.1 python对象类型分类
python对象可以分为可变和不可变,并且相同对象类型有共同的操作。
| 序号 | 对象类型 | 对象分类 | 是否可变 |
|---|---|---|---|
| 1 | 数字 | 数值 | 否 |
| 2 | 字符串 | 序列 | 否 |
| 3 | 列表 | 序列 | 是 |
| 4 | 字典 | 映射 | 是 |
| 5 | 元组 | 序列 | 否 |
| 6 | 文件 | 扩展 | N/A |
| 7 | sets | 集合 | 是 |
| 8 | frozenset | 集合 | 否 |
| 9 | bytearray(3.0) | 序列 | 是 |
python有些对象可以包含任意类型对象,可以任意嵌套,可以迭代遍历。
| 序号 | 归类 | 对象 | 操作 |
|---|---|---|---|
| 1 | 序列类型 | 字符串、列表、元组、bytearray | 共同操作:索引、分片、重复、合并等 |
| 2 | 可变对象 | 列表、字典、集合 | 可以原处修改 |
| 3 | 不可变对象 | 数字、字符串、元组 | 不能原处修改 |
| 4 | 任意嵌套 | 列表、字典、元组 | 包含任意类型对象,任意嵌套 |
| 5 | 动态变化 | 列表、字典 | 动态扩大、缩小 |
| 6 | 可迭代 | 字符串、列表、字典、元组、文件、集合、bytearray | 用for循环遍历 |
1.2 python引用和复制
1.2.1 可变对象的引用
描述
python赋值操作会产生引用,多次赋值相同对象,就会产生相同对象有多个引用。
如果对象是可变对象,那么一处修改,就会导致其他的引用同时被修改。
示例
>>> X=[91,92,93]
>>> L=['梯阅线条',X,'tyxt']
>>> D={'x':X,'y':9555}
>>> X
[91, 92, 93]
>>> L
['梯阅线条', [91, 92, 93], 'tyxt']
>>> D
{'x': [91, 92, 93], 'y': 9555}
>>> D['x']
[91, 92, 93]
>>> D['x'][0]=90
>>> X
[90, 92, 93]
>>> L
['梯阅线条', [90, 92, 93], 'tyxt']
>>> D
{'x': [90, 92, 93], 'y': 9555}
1.2.2 可变对象的复制
描述
如果不想引用的共同对象,被其它引用修改,那么可以使用复制。
| 序号 | 复制 | 操作 |
|---|---|---|
| 1 | 序列复制 | L[:] |
| 2 | 字典复制 | D.copy() |
示例
>>> X=[91,92,93]
>>> L=['梯阅线条',X[:],'tyxt']
>>> D={'x':X[:],'y':9555}
>>> X
[91, 92, 93]
>>> L
['梯阅线条', [91, 92, 93], 'tyxt']
>>> D
{'x': [91, 92, 93], 'y': 9555}
>>> D['x'][0]=90
>>> X
[91, 92, 93]
>>> L
['梯阅线条', [91, 92, 93], 'tyxt']
>>> D
{'x': [90, 92, 93], 'y': 9555}
# [:]分片复制序列,copy复制字典
>>> L1=[91,92,93]
>>> D1={'name':'梯阅线条','no':9555}
>>> L=L1[:]
>>> D=D1.copy()
>>> L1
[91, 92, 93]
>>> D1
{'name': '梯阅线条', 'no': 9555}
>>> L
[91, 92, 93]
>>> D
{'name': '梯阅线条', 'no': 9555}
>>> L[0]=90
>>> D['no']=9556
# 修改相互不影响
>>> L1,L
([91, 92, 93], [90, 92, 93])
>>> D1,D
({'name': '梯阅线条', 'no': 9555}, {'name': '梯阅线条', 'no': 9556})
1.2.3 python对象重复
描述
python可变序列对象的重复,有两种,值重复(L*n)和嵌套重复([L]*n)。
示例
>>> L=[1,2,3]
>>> X=L*3
>>> Y=[L]*3
>>> X
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> Y
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
>>> L[0]=0
>>> X
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> Y
[[0, 2, 3], [0, 2, 3], [0, 2, 3]]
1.3 python对象比较和真假值
1.3.1 python对象比较
描述
python对象支持相等性、相对大小的比较,首次差值决定比较结果。
| 序号 | 操作 | 描述 |
|---|---|---|
| 1 | == | 比较值是否相等 |
| 2 | is | 比较是否通一对象,值和地址 |
python对象比较方法。
| 序号 | 对象 | 描述 |
|---|---|---|
| 1 | 数字 | 通过相对大小进行比较 |
| 2 | 字符串 | 按顺序一个字符一个字符比较 |
| 3 | 列表、元组 | 从左到右对每部分内容进行比较 |
| 4 | 字典 | 通过排序后的键值列表比较 |
示例
>>> L1=[91,('梯阅线条',9555)]
>>> L2=[91,('梯阅线条',9555)]
# == 值比较,is 内存地址比较
>>> L1==L2,L1 is L2
(True, False)
>>> id(L1),id(L2)
(29852736, 29854616)
>>> S1='梯阅线条'
>>> S2='梯阅线条'
# 大字符串 is 不同
>>> S1 == S2,S1 is S2
(True, False)
>>> S1='tyxt'
>>> S2='tyxt'
# 小字符串 is 相同
>>> S1 == S2,S1 is S2
(True, True)
>>> D1={'a':1,'b':2}
>>> D2={'a':1,'b':3}
>>> D1 == D2
False
>>> D1 < D2
Traceback (most recent call last):
File "<pyshell#55>", line 1, in <module>
D1 < D2
TypeError: '<' not supported between instances of 'dict' and 'dict'
>>> list(D1.items()),sorted(D1.items())
([('a', 1), ('b', 2)], [('a', 1), ('b', 2)])
# python3的字典比较,通过内置sorted()和items()进行
>>> sorted(D1.items()) < sorted(D2.items())
True
>>> sorted(D1.items()) > sorted(D2.items())
False1.3.2 python对象真假值
描述
python对象不是真就是假。python通过if X:语句判断对象真假。
| 序号 | 对象 | 描述 |
|---|---|---|
| 1 | 数字对象 | 非0为真 |
| 2 | 其他对象 | 非空为真 |
| 3 | ‘梯阅线条’ | True |
| 4 | ‘’ | False |
| 5 | [] | False |
| 6 | {} | False |
| 7 | 1 | True |
| 8 | 0.0 | False |
| 9 | None | False |
示例
>>> X='梯阅线条'
>>> if X:
print(X)
梯阅线条
1.3.3 python的None对象
描述
python的None对象,用做初始值,起占位左右。
比如,列表超出长度的索引是无法赋值的,需要预先分配长度,但是值未知,此时可以用None做初始值,做站位使用。
示例
>>> S=None
>>> L=[None]*10
>>> S
>>> L
[None, None, None, None, None, None, None, None, None, None]
1.3.4 python的bool类型
1.3.4.1 bool()
描述
python的bool()内置函数,判断入参是否为True。
示例
>>> bool(1),bool(0),bool(None)
(True, False, False)
>>> bool('tyxt'),bool('')
(True, False)
>>> bool({}),bool([])
(False, False)
版权声明©:
本文首发微信公众号:梯阅线条,
原创不易,转载请注明出处。
更多内容参考python学习笔记或软件测试开发目录。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




