在学习python过程中,经常被这些东西所困扰,在我的角度,总感觉它们是一样的,都是元素的组合,但它们的格式是不一样的,有时候需要数组时,给出了一个列表,这次对这些问题做一个梳理,也是记录一下Python学习的过程。

参考链接:

谈谈Python中列表、元组和数组的区别和骚操作 – 知乎 (zhihu.com)

python列表与数组_csdn_python中列表与数组

python模块:array数组模块 – yescarf – 博客园 (cnblogs.com)

Python中的数组–什么是Python数组以及如何使用它们?-云社区-华为云 (huaweicloud.com)

列表(List)

最开始接触的应该是 “列表” 这个概念。

# 列表的使用(定义与引用)
# 最基础的方法
list_test = [1, 2, 3]
print(list_test[0])
message = f"hello, the output is {list_test[0]}"
print(message)
# 输出:
# 1
# hello, the output is 1

# 列表的添加与删除
# 在末尾插入新的元素 4
list_test = [1, 2, 3, 4]
list_test.append(4)
# 在指定位置插入,在第1个元素后插入4
list_test.insert(1,4)
# 列表的删除(del/pop/remove)
list_test = [1, 2, 3]
del list_test[0]
list_test = [1, 2, 3]
aaa = list_test.pop(0)
# 相较于del,pop会将要除去的值弹出,当需要删除的值需要用时可以使用
list_test = [1, 2, 3]
list_test.remove(1)

# 列表批量的一些处理方法
number = list(range(1, 6))
# 输出:[1, 2, 3, 4, 5]
number1 = list(range(2, 12, 2))
# 输出:[2, 4, 6, 8, 10]

# 直接接括号就是创建空列表,之后接循环语句可以创造想要的列表
number3 = []
for value in range(1, 11):
    number3.append(value**2)
# 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

以上便是 “列表” 相关的知识,那么会有一些疑问,列表是否可以以非元素的方式进行计算?以及列表是否可以批量赋值?这里进行一下尝试。

list_test1 = [1, 2, 3]
list_test2 = [2, 3, 4]
list_test3 = list_test2 + list_test1
print(list_test3)
# 输出: [2, 3, 4, 1, 2, 3]
# 列表的加减是元素的增添,不是对应元素的加减
# 想要实现列表对应元素的加减,最简单使用循环语句
list_test3 = []
for i in range(len(list_test1)):
    list_test3.append(list_test1[i] + list_test2[i])
print(list_test3)
# 当然还可以利用numpy中的函数,那个是之后的内容

元组(Tuple)

元组与列表是及其相似的,只不过元组的值不可以单独修改。

number = (1, 2)
print(number[1])
# 元组可以整体重新赋值,但不可单个元素操作

数组

listpython中内置数据类型,list中可以包含不同类型的数据,list中存放的是数据存放的指针,并非数据,其形状不需要预先定义(其实就是个一维的,所谓的多维是嵌套的作用),而数组在使用前是需要进行大小的定义,在python 中并没有内置数组模块,而是提供了array模块,但平常用得更多的还是numpy中的ndarray,然后需要注意的是array()是指numpy中的一个函数,而ndarray是指其类型为多为数组对象。

import numpy as np
a = np.array([[1, 1, 1], [2, 2, 2]])
print(a)
# 输出:
# [[1 1 1]
#  [2 2 2]]
# 需要注意到,数组中元素之间是不用逗号分开的
b = type(a)
print(b)
# 输出:
# <class 'numpy.ndarray'>
c = 1.0
d = type(c)
print(d)
# 输出:
# <class 'numpy.ndarray'>

数组的加减就是我们常规理解的加减,如下:

import numpy as np
a = np.array([[1, 1, 1], [2, 2, 2]])
b = np.array([[1, 1, 1], [2, 2, 2]])
c = a + b
print(c)
# 输出:
# [[2 2 2]
#  [4 4 4]]

数组的使用和列表类似,其与列表之间的转换如下:

import numpy as np
a = np.array([[1, 1, 1], [2, 2, 2]])
b = a.tolist()
print(b)
# 输出:
# [[1, 1, 1], [2, 2, 2]]
c = np.array(b)
print(c)
# 输出
# [[1 1 1]
#  [2 2 2]]