文章目录
一、 2022.08.28 周日
1.1) 之前写的文章:
- 【Python大系】Python快速教程
- 《Python 数据库 GUI CGI编程》
- 【技术文章】《初识Python》
- 之前的 python 代码: https://github.com/wozhuzaisi/0_MyHome/blob/master/pythonCode/CommonPythonClass.py
1.2) 基础点
- python 是强类型的语言
- 字典和列表、元组在构建上有所不同。列表是方括号 [],元组是圆括号 (),字典是花括号 {}
- 获取对象
1.3) 配置
- 安装 pip: https://zhuanlan.zhihu.com/p/335220647
1.4) Python2 和 Python3 的区别
- https://www.runoob.com/python/python-2x-3x.html
· Python3.x 与 Python2.x 的许多兼容性设计的功能可以通过 future 这个包来导入。
1.5) 相关问题跟踪解决
- 包依赖问题: https://blog.csdn.net/hustqb/article/details/60133776
1.6) 其他
- Python中类的初始化,不需要 new,直接调用就行
- 一些 demo的例子:
- 例子01: 使用 python,向本地 ~/ 路径下生成文件 myTestPython.csv文件,文件中的内容是一个name, age的 excel,一共2条数据。
[{
"name":"zhoujielun",
"age": 18
},
{
"name":"jizemingbu",
"age": 20
}]
- python的集合操作类型
https://raw.githubusercontent.com/woaielf/woaielf.github.io/master/_posts/Pic/1706/170613-7.png™¡
1.6.1) 网络文章
1.6.2) 对类型提示的支持
- 字符串:name: str
- 整型: int
- 列表: List[]
- 元组:
typing.Tuple
元组类型; Tuple[X, Y] 标注了一个二元组类型,其第一个元素的类型为 X 且第二个元素的类型为 Y。空元组的类型可写作 Tuple[()] 。
举例: Tuple[T1, T2] 是一个二元组,类型分别为 T1 和 T2。 Tuple[int, float, str] 是一个由整数、浮点数和字符串组成的三元组。
为表达一个同类型元素的变长元组,使用省略号字面量,如 Tuple[int, ...] 。单独的一个 Tuple 等价于 Tuple[Any, ...],进而等价于 tuple 。
二、 2024.06.18 周日
2.1) 问题01:Python中的数组和列表的表示异同
在 Python 中,“数组”和“列表”是两种不同的数据结构,它们各自有着不同的特点和使用场景。下面是对 Python 中数组和列表的详细比较,包括它们的表示、异同点以及使用示例。
列表(List)
表示
在 Python 中,列表是用方括号 []
来表示的,可以包含任意类型的元素,并且元素之间可以是混合类型。
my_list = [1, 2, 3, 4, 5]
mixed_list = [1, "hello", 3.14, True]
特点
- 动态大小:列表的大小是动态的,可以随时增加或删除元素。
- 多种数据类型:列表可以包含不同类型的元素。
- 内置方法:列表提供了许多内置方法,如
append()
,extend()
,insert()
,remove()
,pop()
,sort()
,reverse()
等。 - 通用性:列表是 Python 中最常用的数据结构,适用于广泛的场景。
使用示例
my_list = [1, 2, 3]
my_list.append(4) # 增加元素
my_list.remove(2) # 删除元素
print(my_list) # 输出: [1, 3, 4]
print(my_list[0]) # 访问元素: 1
数组(Array)
表示
在 Python 中,数组主要通过 array
模块或第三方库(如 numpy
)来实现。与列表不同,数组通常是同质的,即所有元素必须是相同的数据类型。
使用 array
模块:
import array
my_array = array.array('i', [1, 2, 3, 4, 5]) # 'i' 表示整数类型
使用 numpy
模块:
import numpy as np
my_array = np.array([1, 2, 3, 4, 5])
特点
- 同质性:数组中的所有元素必须是相同的数据类型。
- 更高的性能:由于类型一致,数组的性能往往比列表更高,特别是在需要进行大量数值计算时。
- 更多的功能:使用
numpy
时,数组具有丰富的数值运算功能和多维数组支持。 - 固定大小:使用
array
模块创建的数组在初始化后大小固定,但numpy
数组可以通过重新分配内存来改变大小。
使用示例
使用 array
模块:
import array
my_array = array.array('i', [1, 2, 3, 4, 5])
my_array.append(6) # 增加元素
my_array.remove(2) # 删除元素
print(my_array) # 输出: array('i', [1, 3, 4, 5, 6])
print(my_array[0]) # 访问元素: 1
使用 numpy
模块:
import numpy as np
my_array = np.array([1, 2, 3, 4, 5])
my_array = np.append(my_array, 6) # 增加元素
my_array = np.delete(my_array, 1) # 删除元素
print(my_array) # 输出: [1 3 4 5 6]
print(my_array[0]) # 访问元素: 1
异同点总结
相同点
- 可索引和切片:数组和列表都支持索引和切片操作。
- 可迭代:数组和列表都可以被迭代。
不同点
- 数据类型:列表可以包含不同类型的元素,而数组通常要求所有元素类型一致。
- 性能:对于数值运算,数组(特别是
numpy
数组)比列表更高效。 - 功能:
numpy
数组提供了丰富的数值运算功能,而列表更通用,适用于广泛的非数值场景。 - 模块:列表是 Python 内置的数据结构,而数组需要通过
array
模块或numpy
库来实现。
选择使用
- 列表:当需要存储不同类型的元素或处理不确定大小的数据时,列表是首选。
- 数组:当需要进行大量数值计算或处理大规模同质数据时,
numpy
数组是更好的选择。对于简单的同质数据,也可以使用array
模块。
其他
实际上 python 使用多的是 元组(小括号), 列表(中括号),字典(大括号), 数组一般不使用(需要借助别的模块)
2.2)问题02:python3中的 deque中的方法都有哪些
collections.deque
是 Python 标准库中的一个双端队列(deque),支持在两端高效地添加和删除元素。下面是 deque
提供的主要方法及其简要说明:
1. append(x)
在 deque 的右侧添加一个元素 x
。
from collections import deque
d = deque()
d.append(1)
print(d) # 输出: deque([1])
2. appendleft(x)
在 deque 的左侧添加一个元素 x
。
d.appendleft(2)
print(d) # 输出: deque([2, 1])
3. pop()
移除并返回 deque 右侧的一个元素。如果 deque 为空,则引发 IndexError
。
print(d.pop()) # 输出: 1
print(d) # 输出: deque([2])
4. popleft()
移除并返回 deque 左侧的一个元素。如果 deque 为空,则引发 IndexError
。
print(d.popleft()) # 输出: 2
print(d) # 输出: deque([])
5. extend(iterable)
将 iterable
中的所有元素添加到 deque 的右侧。
d.extend([3, 4, 5])
print(d) # 输出: deque([3, 4, 5])
6. extendleft(iterable)
将 iterable
中的所有元素添加到 deque 的左侧(注意添加顺序会被反转)。
d.extendleft([0, -1, -2])
print(d) # 输出: deque([-2, -1, 0, 3, 4, 5])
7. clear()
移除 deque 中的所有元素。
d.clear()
print(d) # 输出: deque([])
8. count(x)
返回 deque 中值为 x
的元素个数。
d.extend([1, 2, 3, 1, 1])
print(d.count(1)) # 输出: 3
9. remove(value)
移除第一个值为 value
的元素。如果没有这样的元素,则引发 ValueError
。
d.remove(1)
print(d) # 输出: deque([2, 3, 1, 1])
10. reverse()
将 deque 中所有元素的顺序反转。
d.reverse()
print(d) # 输出: deque([1, 1, 3, 2])
11. rotate(n=1)
将 deque 中的元素向右旋转 n
步。如果 n
是负数,则向左旋转。
d.rotate(1)
print(d) # 输出: deque([2, 1, 1, 3])
d.rotate(-2)
print(d) # 输出: deque([1, 3, 2, 1])
12. maxlen
属性
返回 deque 的最大长度,如果未设置最大长度,则返回 None
。
d = deque([1, 2, 3], maxlen=3)
print(d.maxlen) # 输出: 3
示例代码汇总
from collections import deque
# 创建一个双端队列
d = deque([1, 2, 3])
# 在右侧添加元素
d.append(4)
print(d) # 输出: deque([1, 2, 3, 4])
# 在左侧添加元素
d.appendleft(0)
print(d) # 输出: deque([0, 1, 2, 3, 4])
# 移除并返回右侧元素
print(d.pop()) # 输出: 4
print(d) # 输出: deque([0, 1, 2, 3])
# 移除并返回左侧元素
print(d.popleft()) # 输出: 0
print(d) # 输出: deque([1, 2, 3])
# 扩展右侧
d.extend([4, 5])
print(d) # 输出: deque([1, 2, 3, 4, 5])
# 扩展左侧
d.extendleft([0, -1, -2])
print(d) # 输出: deque([-2, -1, 0, 1, 2, 3, 4, 5])
# 计数
print(d.count(1)) # 输出: 1
# 移除第一个匹配项
d.remove(1)
print(d) # 输出: deque([-2, -1, 0, 2, 3, 4, 5])
# 反转
d.reverse()
print(d) # 输出: deque([5, 4, 3, 2, 0, -1, -2])
# 旋转
d.rotate(2)
print(d) # 输出: deque([-1, -2, 5, 4, 3, 2, 0])
d.rotate(-3)
print(d) # 输出: deque([4, 3, 2, 0, -1, -2, 5])
# 清空
d.clear()
print(d) # 输出: deque([])
# 最大长度
d = deque([1, 2, 3], maxlen=3)
print(d.maxlen) # 输出: 3
这些方法和属性使得 deque
非常灵活和强大,适用于需要在两端高效操作的场景。
三、2024.06.19 周三
3.1)问题01: python中的null怎么表示和使用?
在 Python 中,None
是用于表示空值或缺失值的特殊对象。None
是一个单例对象,这意味着在一个 Python 程序中只有一个 None
实例。它通常用于表示“没有值”或“值未知”。
表示和使用 None
以下是一些关于如何表示和使用 None
的示例:
1. 初始化变量
将变量初始化为 None
以表示该变量当前没有值。
value = None
print(value) # 输出:None
2. 函数的默认返回值
如果函数没有显式返回值,它会默认返回 None
。
def greet(name):
print(f"Hello, {name}!")
result = greet("Alice") # 输出:Hello, Alice!
print(result) # 输出:None
3. 作为函数的默认参数
None
可以用作函数参数的默认值,然后在函数内部检查是否提供了实际值。
def greet(name=None):
if name is None:
print("Hello, World!")
else:
print(f"Hello, {name}!")
greet() # 输出:Hello, World!
greet("Alice") # 输出:Hello, Alice!
4. 条件判断
使用 None
进行条件判断。
value = None
if value is None:
print("Value is None")
else:
print("Value is not None")
5. 在数据结构中表示缺失值
使用 None
表示列表或字典中的缺失值。
data = [1, 2, None, 4]
print(data) # 输出:[1, 2, None, 4]
person = {"name": "Alice", "age": None}
print(person) # 输出:{'name': 'Alice', 'age': None}
None
的特点
- 类型:
None
的类型是NoneType
。
print(type(None)) # 输出:<class 'NoneType'>
- 比较:
None
与任何值比较时都返回False
,除了与自身比较时返回True
。
print(None == None) # 输出:True
print(None == 0) # 输出:False
print(None == "") # 输出:False
- 作为单例使用:
None
是一个单例对象,这意味着所有对None
的引用实际上都指向同一个对象。这使得使用is
运算符进行比较成为判断None
的惯用方法。
value = None
print(value is None) # 输出:True
使用场景
- 初始化变量:在变量没有初始值的情况下使用
None
。 - 函数返回值:当函数需要在某些条件下没有返回值时使用
None
。 - 参数默认值:在函数参数的默认值使用
None
,以便能够在函数内部检测参数是否被实际提供。 - 缺失值表示:在数据结构中表示缺失或未知值。
注意事项
- 使用
None
与其他值比较时应使用is
而不是==
。这是因为None
是一个单例对象,使用is
可以确保引用的是同一个对象。
if value is None:
print("Value is None")
总结起来,None
是 Python 中用于表示空值或缺失值的特殊对象,广泛应用于初始化变量、函数默认返回值、参数默认值以及表示数据结构中的缺失值。使用 None
可以使代码更具表达力和可读性。