Python里,咱们常说的“数组”,其实更准确地说是列表(list)。当然,用一些库,比如NumPy,能真正用上数组,那操作起来可就溜多了。但入门嘛,先搞懂列表是王道。
列表这玩意儿,你完全可以把它想象成一个可以随意伸缩的百宝箱。啥都能往里扔,数字、字符串、甚至其他的列表!
那Python列表怎么定义?简单得很:
直接用方括号 []
:
这是最直接的方式。比如:
python
my_list = [] # 空列表,啥都没有
numbers = [1, 2, 3, 4, 5] # 装着数字的列表
fruits = ["apple", "banana", "cherry"] # 装着水果名字的列表
mixed = [1, "hello", 3.14, True] # 混合类型的列表,Python就是这么任性
瞧见没?简单粗暴,直接搞定。不过,这还只是静态的。如果你想动态地往列表里加东西,或者从其他数据结构生成列表,还有其他办法。
使用 list()
函数:
list()
函数就像一个变形金刚,能把其他可迭代对象(比如字符串、元组、集合、甚至字典的键)变成列表。
-
字符串转列表:
python
string = "Python"
char_list = list(string)
print(char_list) # 输出:['P', 'y', 't', 'h', 'o', 'n']这玩意儿,在处理字符串的时候,特别有用。
* 元组转列表:元组(tuple)是不可变的,但有时候你想改改它,把它变成列表就是个好办法。
python
my_tuple = (1, 2, 3)
my_list = list(my_tuple)
print(my_list) # 输出:[1, 2, 3] -
集合转列表:
集合(set)是无序的,且元素唯一。转成列表后,你可以对它排序、切片啥的。
python
my_set = {1, 2, 3}
my_list = list(my_set)
print(my_list) # 输出:[1, 2, 3] (顺序可能不一样,因为集合是无序的)
列表推导式:
这绝对是Python里最酷的功能之一!列表推导式能让你用一行代码就生成一个列表,简直不要太爽。
“`python
生成一个包含 0 到 9 的平方的列表
squares = [x**2 for x in range(10)]
print(squares) # 输出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
生成一个包含 0 到 9 的偶数的列表
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers) # 输出:[0, 2, 4, 6, 8]
“`
列表推导式的结构是 [expression for item in iterable if condition]
。你可以理解成:对于可迭代对象里的每一个元素,如果满足某个条件,就执行一个表达式,然后把结果放到列表里。
这玩意儿用熟了,能省好多事儿。
关于NumPy数组:
如果你真要处理大规模的数值数据,那NumPy数组才是正道。NumPy数组的特点是:
- 类型统一: 数组里的所有元素必须是同一种类型,比如都是整数、都是浮点数。这样能提高运算效率。
- 高效的数值运算: NumPy提供了大量的数学函数,能让你快速地对数组进行各种运算,比如加、减、乘、除、矩阵运算等等。
- 广播机制: 允许不同形状的数组进行运算,NumPy会自动进行扩展,方便得一批。
要用NumPy数组,首先得安装NumPy:
bash
pip install numpy
然后,导入 NumPy:
python
import numpy as np
创建NumPy数组的方式有很多:
-
从列表创建:
python
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
print(my_array) # 输出:[1 2 3 4 5]
print(type(my_array)) # 输出:<class 'numpy.ndarray'>
* 使用 NumPy 内置函数:“`python
创建一个全是 0 的数组
zeros = np.zeros((3, 4)) # 3行4列
print(zeros)创建一个全是 1 的数组
ones = np.ones((2, 3)) # 2行3列
print(ones)创建一个指定范围的数组
arange = np.arange(0, 10, 2) # 从 0 到 10,步长为 2
print(arange) # 输出:[0 2 4 6 8]创建一个指定数量的等间隔数组
linspace = np.linspace(0, 1, 5) # 从 0 到 1,分成 5 份
print(linspace) # 输出:[0. 0.25 0.5 0.75 1. ]创建一个随机数组
random = np.random.rand(2, 2) # 2行2列的随机数,范围是 0 到 1
print(random)
“`
总之,Python的“数组”(列表)和NumPy数组,都是很强大的工具。用哪个,取决于你的具体需求。如果是处理普通的数据,列表完全够用;如果是处理大规模的数值数据,那NumPy数组就是不二之选。 别忘了多敲代码,实践出真知!
评论(0)