Python中列表的应用(实现C语言中的数组,矩阵的转置,跟随排序,动态规划法TSP问题代码)

您所在的位置:网站首页 c语言三维数组转置 Python中列表的应用(实现C语言中的数组,矩阵的转置,跟随排序,动态规划法TSP问题代码)

Python中列表的应用(实现C语言中的数组,矩阵的转置,跟随排序,动态规划法TSP问题代码)

2024-05-26 07:01| 来源: 网络整理| 查看: 265

1 列表应用 1.1 初始化一个用列表构成的二维数组(矩阵) (1)基础构成

[[1,2,3,4],[5,6,7,8]] 1 2 3 4 5 6 7 8 \begin{matrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8\\ \end{matrix} 15​26​37​48​ 用列表嵌套列表的方式,内嵌列表为每一行的元素

(2)如何用列表实现C语言中的数组

问题:用python中的列表实现初始化一个n*m的数组,初始化之后可以直接通过array[0][1] =1索引来更改某位置的元素

类似C语言中 int array[4][5]

int main(){ int array[4][5]; array[0][1] = 5; printf("array[0][1]"); }

最常见遇到的问题:

array = [] array[0] = 1 print(array[0]) # 会报错 IndexError: list assignment index out of range

首先分析一下C语言的代码逻辑

int array[4][5] 干了两件事

​ 一是创建了array数组

​ 而是像内存中分配了对应的内存单元

​ 分配了内存单元但是初值并不一定为0

​ 所以说在一些需求中:

​ 例如创建一个4*5的整数类型数组,然后再将第一行和第一列初始化为0,还是要进行初始化的

然后再看常遇到的问题

array 只干了一件事情

​ 创建了array这个列表对象,并没有分配内存

​ 所以不能具备array[0] = 1,直接将0位置处元素初始化为1

总结:

要让python中的列表实现C语言中的数组,并完成通过索引直接修改列表中元素的值,需要对列表进行初始化

1 python中用列表生成一维数组array[n] # python中用列表生成一维数组array[n] n = 5 array = [0 for _ in range(n)] array[1] = 10 2 用python用列表生成二维数组array [n] [m]

方法一:初步想的丑陋

# 用python用列表生成二维数组array[n][m] array = [[]for _ in range(n)] for i in array: for j in range(m): i.append(0)

方法二:用列表生成式

列表生成式

lst = [列表元素,for i in range(n) if condition]

生成n个元素为符合条件condition的列表元素

# 3行2列 n = 3 m = 2 array = [[0]*m for _ in range(n)]

先执行[0]*m [0,0] 然后生成n个元素为[0,0]的列表

方法三:用for循环替代列表生成式

3 用python生成一个n维数组

方法一:嵌套列表生成式

n = 3 array = [[[0 for _ in range(n)] for _ in range(n)] for _ in range(n)]

[0 for _ in range(n)] 生成一个n*1的一维数组,初始值为0

[[0 for _ in range(n)] for _ in range(n)] 生成n个元素为[0 for _ in range(n)]的列表,生成一个n*n的二维数组数组,初始值为0

[[[0 for _ in range(n)] for _ in range(n)] for _ in range(n)] 生成n个元素为[[0 for _ in range(n)] for _ in range(n)]

方法二:用for循环替代嵌套列表生成式

n = 3 array = [] for _ in range(n): inner_array = [] for _ in range(n): inner_array.append([0] * n) array.append(inner_array) 4 通用函数 def generate_n_dimensional_array(n, *dimensions): if n


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3