轻量级前端框架助力开发者提升项目效率与性能
687
2022-10-31
数组(array)、列表(list)的动态初始化
在python中我们如果我们需要
从其他的对象中(数组,列表,元组,字典等等)用户自定义输入
获取我们所需要定义的数组或者列表长度,然后再进一步对数组和列表进行初始化该怎么实现呢?这里我们讨论如何对数组和列表进行动态初始化。难点:二维列表的动态初始化
数组的动态初始化(一维):
import numpy as npclass ndarrayInitialization: def __init__(self): self.num = input("Please input a string:") # abcde self.length = len(self.num) self.array = np.zeros(self.length) print((self.array)) # [0. 0. 0. 0. 0.] main = ndarrayInitialization()
这里我们输入字符串abcde,然后获取字符串的长度为5,最后生成全零矩阵,我们可以看到最终的矩阵长度为5,至此,我们完成了一维动态矩阵初始化。这是一维的情况,并且矩阵的长度源于用户的输入。
数组的动态初始化(二维):
import numpy as npclass ndarrayInitialization: def __init__(self): self.list = [[1, 2, 3], [3, 4, 5]] self.outerlength = (len(self.list)) self.innerlength = (len(self.list[0])) self.size = (self.outerlength, self.innerlength) self.array = np.zeros(self.size) print((self.array)) """ result: [[0. 0. 0.] [0. 0. 0.]] """ main = ndarrayInitialization()
这里我们先定义一个列表对象,然后获取到它的size为(2 , 3),最后将(2, 3)作为参数传递进矩阵进行初始化,最终得到一个2 * 3大小的全零矩阵,至此,我们完成了二维动态矩阵初始化。
列表的动态初始化(一维): 列表的动态初始化本身就是一个伪命题,并不存在任何的难度,代码如下:
import numpy as npclass listInitialization: def __init__(self): self.list = [1, 2, 3] self.length = (len(self.list)) self.list1 = [0] * self.length print((self.list1)) # [0, 0, 0] main = listInitialization()
我们只需要获取列表,并且使用[0]乘以我们所获取到的长度self.length即可实现一维列表的初始化。但是为什么这里说是伪命题呢?因为通常我们在定义列表的时候并不会对列表本身进行赋值操作,而是先定义一个空列表,然后在需要的时候对其进行赋值操作。 因此我们只需要定义self.list1 = []即可。然而如果我们想要定义一个二维列表呢?此时定义一个二维全空列表就显得不那么容易了,这时我们可以采用如下代码:
import numpy as npclass listInitialization: def __init__(self): self.num = 5 self.list = [[] * self.num] print((self.list)) # [[]] main = listInitialization()
我们可以看到最终得结果为[[]],内层并没有像我们希望的那样出现5个列表。因此,我们需要添加一个内层循环。
列表的动态初始化(二维):
import numpy as npclass listInitialization: def __init__(self): self.num = 5 self.list = [[] * i for i in range(self.num)] print((self.list)) # [[], [], [], [], []] main = listInitialization()
可以看到此时的结果为[[], [], [], [], []],这是因为range(self.num)也就是range(5)会产生一个(0,1, 2, 3, 4)的序列,从上面失败的结果我们知道空列表[]乘以任意值均为空列表[],[[] * i for i in range(self.num)]相当于进行了[[] * 0, [] * 1, [] * 2, [] * 3, [] * 4]的操作,最终得到了我们想要的初始化结果,至此我们实现了二维列表的动态初始化。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~