python笔记

1. 数据类型

首先 Python 是属于“动态类型语言”的编程语言,所谓动态,是指变量的类 型是根据情况自动决定的。如在 x = 1 中并没有明确指出“x的类 型是int(整型)”,是Python根据x被初始化为10,从而判断出x的类型为 int的。我们只需赋值和运算,不用管具体的数据类型。

但这常常是十分危险的,尤其是在高维数组的处理中,我们既不清楚一个变量背后的维度,具体的 size,也不清楚他的数据类型,给数据处理带来隐患。可以用注释的形式或调用 py3.5 后引入的类型注解(type annotation)功能提示变量类型。

基本数据类型: 整数型(int)浮点型(float)布尔型(bool)复数(complex)

复杂数据类型:列表(list)元组(tuple)字典(dictionar)集合(set)

列表(Lists):有序的、可变的数据结构,可以包含不同类型的元素,例如:[1, 'a', 3.14]

元组(Tuples):有序的、不可变的数据结构,一旦创建就不能修改,例如:(1, 'a', 3.14)

字典/映射(Dictionaries/Map):无序的(从Python 3.7开始,实际上是有序的)、可变的数据结构,以键值对的形式存储数据,例如:{'name': 'Alice', 'age': 30}

集合(Sets):无序的、可变的数据结构,用于存储唯一的元素,例如:{1, 2, 3}

  1. 元组, 数组与列表

很多编程语言中有数组和列表两个概念,核心区别在于数组 array 中的所有元素类型必须是同类型的所以可以有更高效的存储和计算性能,而列表 list 是更灵活的数据结构可以包含有不同类型的元素

但是 python 没有叫做数组 array 的内置数据结构,这一点靠 python 库 numpy 的函数,提供了数据类型 numpy.array 去实现。np.array 和 list 都用 [1, 2, 3] 这样的形式表示。(括号层数代表数组维度)

当 np.array 的指定数据类型参数 dtype = object 时,数组为对象数组,与列表几乎一致,可以混合包含整数、字符串、列表或其他 python 对象

元组 tuple 是区别于已有的数据类型的一种(好像是)在 python 中特有的数据类型:元组不可变,一旦被创建,其包含的元素个数(size)和类型就不可变了,而其具体的值是否可变要取决于其元素的数据类型。因为元组的不可变性,元组常被用作词典的键

有 asarray: array 和 asarray 都可以将结构数据转化为ndarray,但是主要区别就是当数据源是 ndarray 时,array 仍然会copy出一个副本,占用新的内存,但 asarray 不会。

  1. 可变与不可变

可变(Mutable)与不可变(Immutable)是 Python 中数据类型的基本性质,数据类型可以根据他们是否允许在创建后修改其值来分为可变类型或者不可变类型。整数,浮点数,字符串,布尔值,复数和元组是不可变类型,而列表,字典,集合和数组是可变类型。 一系列数据中只有元组是不可变类型

不可变类型意味着一旦创建,它们的值不能被改变。例如,你不能更改一个整数的值或更改一个字符串中的字符。如果你尝试“更改”一个不可变类型的值,实际上会创建一个新的对象。可变类型则允许在创建后修改其内容。例如,你可以添加或删除列表中的元素,或者更改字典中的键值对。(元组也是不可变的,这意味着如果要改变元素的值,虽然不改变类型和大小,但因为不可变性实际上会创建一个新的元组对象)在设计程序时,了解数据类型的可变性是非常重要的,因为它影响数据的共享、传递和存储。不可变类型通常更安全,因为它们保证数据不会被意外修改;而可变类型则在需要动态修改数据时非常有用

  1. 字典

在Python中,字典(dict)是一种存储键值对(key-value pairs)的数据结构,每个键都映射到一个确定的值,键有几个基本特性:1.唯一性2.不可变性(所以键只能是整数浮点数字符串和元组等不可变类型)3.散列性(hashability)

一个键只能对应于一个值,但是因为值没有太多约束所以多个键可以对应到同一个值。

1
2
3
4
5
6
7
8
9
10
11
# 创建一个有序字典
my_dict = {
"apple": "fruit",
"carrot": "vegetable",
"banana": "fruit",
"celery": "vegetable"
}

# 多个键对应相同的值
my_dict["red"] = "color"
my_dict["blue"] = "color"

字典这种索引映射的方式和类有一定的相似性,但远远不如。

字典是 Python 内置的数据结构,用于存储键值对;而类是用户定义的数据类型,是面向对象编程的核心特性之一,用于创建具有复杂行为和属性的对象。类可以包含方法(函数)和属性(变量),并可以定义初始化方法。

类包含对象的重要特性:封装(Encapsulation),指可以将数据和操作这些数据的方法组合在一起,并隐藏内部实现的细节,只暴露出一个可以被外界访问的接口。


python笔记
http://pafl.top/2024/07/03/python笔记/
Author
Paf
Posted on
July 3, 2024
Licensed under