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数组就是不二之选。 别忘了多敲代码,实践出真知!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。