Python编程:小组技术分享会之is和==

简介: Python编程:小组技术分享会之is和==
# 字符串是不可变类型
s = "pig"
"""
id(s)
Out[18]: 4355286776
"""
s = "cat"
"""
id(s)
Out[20]: 4324273488
"""
# 字符串赋值
a = "apple"
b = "apple"
a == b
# Out[13]: True
a is b
# Out[12]: True
id(a)
# Out[14]: 4368069552
id(b)
# Out[15]: 4368069552
"""
a = "red apple"
b = "red apple"
"""
a == b
Out[7]: True
a is b
Out[8]: False
id(a)
Out[5]: 4368267888
id(b)
Out[6]: 4368267696
# 小整数 
a = 256
b = 256
"""
a == b
Out[4]: True
a is b
Out[5]: True
id(a)
Out[13]: 4297652576
id(b)
Out[14]: 4297652576
"""
a = 257
b = 257
"""
a == b
Out[8]: True
a is b
Out[9]: False
id(a)
Out[10]: 4367096688
id(b)
Out[11]: 4367097168
# 2 ** 8 = 256
"""
# 元组
t = (0, [])
t[-1].append(1)
"""
t
Out[23]: (0, [1])
"""
t[-1] += [1]
"""
TypeError: 'tuple' object does not support item assignment
t
Out[25]: (0, [1, 1])
"""
t[-1] = t[-1] + [2]
"""
TypeError: 'tuple' object does not support item assignment
t
Out[28]: (0, [1, 1])
[1] + [2]
Out[27]: [1, 2]
"""
# 字典的键
{(1, -1): "value"}  # ok
{(1, -1, []): "value"}  # error
# 列表复制
import copy
# 赋值
l1 = [1, 2, 3, []]
l2 = l1
l2.append(4)
"""
l1
Out[30]: [1, 2, 3, [], 4]
l2
Out[31]: [1, 2, 3, [], 4]
"""
# 浅拷贝
l1 = [1, 2, 3, []]
l3 = copy.copy(l1)
l3.append(5)
"""
l1
Out[36]: [1, 2, 3, []]
l3
Out[37]: [1, 2, 3, [], 5]
"""
l3[3].append(6)
"""
l1
Out[39]: [1, 2, 3, [6]]
l3
Out[40]: [1, 2, 3, [6], 5]
"""
# 深拷贝
l1 = [1, 2, 3, []]
l4 = copy.deepcopy(l1)
l4[-1].append(7)
"""
l1
Out[42]: [1, 2, 3, []]
l4
Out[43]: [1, 2, 3, [7]]
"""
# 复制列表
l1 = [1, 2, 3]
l2 = l1
l3 = l1[:]     # 推荐
"""
id(l1)
Out[45]: 4367794824
id(l2)
Out[46]: 4367794824
id(l3)
Out[47]: 4367785032
"""
# 元组复制
t1 = (1, 2, 3)
t2 = t1
"""
t1 is t2
Out[48]: True
"""
# 二维矩阵
l = [0, 0, 0] * 3
"""
l
Out[50]: [0, 0, 0, 0, 0, 0, 0, 0, 0]
"""
matrix = [[0, 0, 0]] * 3 # 会引用同一个列表
"""
matrix
Out[52]: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
matrix[0][0]=1
matrix
Out[54]: [[1, 0, 0], [1, 0, 0], [1, 0, 0]]
"""
matrix = [[0, 0, 0] for i in range(3)]  # 推荐
"""
matrix
Out[56]: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
matrix[0][0]=1
matrix
Out[58]: [[1, 0, 0], [0, 0, 0], [0, 0, 0]]
"""
# None比较
a = None
b = None
"""
a == b
Out[20]: True
a is b
Out[19]: True
id(a)
Out[21]: 4297328656
id(b)
Out[22]: 4297328656
"""
a = 1
a is None   # is判断id
# Out[60]: False
a = None
a is None
# Out[62]: True
# 排序
s = [1, 3, 2]
s.sort()  # return None  原地操作
s
# Out[65]: [1, 2, 3]
sorted(s)
# Out[66]: [1, 2, 3]  # 返回新列表
sorted((1, 2, 3))   # 可迭代即可
# Out[68]: [1, 2, 3]
tuple(1, 2, 3)
# TypeError: tuple() takes at most 1 argument (3 given)
# 检查a is b 的时候,其实相当于检查 id(a) == id(b)。
# 检查 a == b 的时候,实际是调用了对象 a 的 __eq()__ 方法,a == b 相当于 a.__eq__(b)
# python列表可以存不同对象,其实是只保存了对象的地址,地址的大小是固定的
相关文章
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
292 102
|
3月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
314 104
|
3月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
262 103
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
193 82
|
2月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
180 3
|
2月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
436 3
|
2月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
266 3
|
2月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
268 0
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的多面手
Python:现代编程的多面手
84 0
|
3月前
|
存储 人工智能 算法
Python实现简易成语接龙小游戏:从零开始的趣味编程实践
本项目将中国传统文化与编程思维相结合,通过Python实现成语接龙游戏,涵盖数据结构、算法设计与简单AI逻辑,帮助学习者在趣味实践中掌握编程技能。
336 0

推荐镜像

更多