Python中列表的应用(实现C语言中的数组,矩阵的转置,跟随排序,动态规划法TSP问题代码) |
您所在的位置:网站首页 › c语言三维数组转置 › Python中列表的应用(实现C语言中的数组,矩阵的转置,跟随排序,动态规划法TSP问题代码) |
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} 15263748 用列表嵌套列表的方式,内嵌列表为每一行的元素 (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 |