在python中我們如果我們需要
- 從其他的對象中(數組,清單,元組,字典等等)
- 使用者自定義輸入
擷取我們所需要定義的數組或者清單長度,然後再進一步對數組和清單進行初始化該怎麼實作呢?這裡我們讨論如何對數組和清單進行動态初始化。難點:二維清單的動态初始化
數組的動态初始化(一維):
import numpy as np
class 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 np
class 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 np
class 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 np
class listInitialization:
def __init__(self):
self.num = 5
self.list = [[] * self.num]
print((self.list)) # [[]]
main = listInitialization()
我們可以看到最終得結果為
[[]]
,内層并沒有像我們希望的那樣出現
5
個清單。是以,我們需要添加一個内層循環。
import numpy as np
class listInitialization:
def __init__(self):
self.num = 5
self.list = [[] * i for i in range(self.num)]
print((self.list)) # [[], [], [], [], []]
main = listInitialization()