集合set:复杂度为 平均 O(1) ,空间复杂度为 O(n)
列表list:列表的查找时间复杂度为 O(n) ,空间复杂度为 O(n) 。
字典dict:查找时间复杂度为 平均 O(1) ,最坏情况下为 O(n),空间复杂度为 O(n) 。
元组tuple:
元组的查找时间复杂度为 O(1),因为元组是一种不可变序列,内部基于连续的内存区域,可以通过索引快速查找对应位置的元素。由于元组一旦创建之后就不可修改,因此不存在对元素位置的改动,也就不会对查找复杂度造成干扰。元组的空间复杂度为 O(n),其中 n 表示元素个数。因为元组是一种固定长度的序列,创建元组需要预先知道元素个数,内存中按照这个大小分配元素存储空间,因此空间复杂度与元素个数成正比。不过,如果元组中包含的元素是引用类型,在元组中仅会保存引用所占用的内存空间,即使元素是非常大的对象,元组本身的空间开销也很小。
在 Python 中,可以使用内置的 list 类型来存储一系列数据。而在 NumPy 中,则可以使用 ndarray 类型来表示多维数组。下面是两者的主要区别:
- NumPy 数组是同质性的,也就是说数组中只能存储相同类型的元素,而 Python 列表则可以存储不同类型的元素。
- NumPy 数组的大小是固定的,创建数组时需要指定大小,而 Python 列表的大小是动态的,可以根据需要随时增加或减少列表的长度。
- NumPy 数组支持向量化操作和广播,可以对数组中的元素进行批量运算和操作,而 Python 列表则需要使用循环来逐个操作元素,速度较慢。
- NumPy 数组占用的内存较少,效率较高。因为 NumPy 数组是使用连续的内存块来存储数据的,所以可以有效地利用 CPU 缓存,提高数据处理效率。
pandas中的nan分两种:math.nan、np.nan, 识别dataframe中的nan使用np.isnan(lista).