Python 学习 2024.06.18 周日

一、 2022.08.28 周日

1.1) 之前写的文章:

1.2) 基础点

  • python 是强类型的语言
  • 字典和列表、元组在构建上有所不同。列表是方括号 [],元组是圆括号 (),字典是花括号 {}
    在这里插入图片描述
  • 获取对象
    在这里插入图片描述

1.3) 配置

  • 安装 pip: https://zhuanlan.zhihu.com/p/335220647

1.4) Python2 和 Python3 的区别

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) 网络文章

Python十分钟入门

1.6.2) 对类型提示的支持

typing —— 对类型提示的支持

  • 字符串: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 可以使代码更具表达力和可读性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值