簡體   English   中英

如何在Python中動態創建和管理常見數據類型的新實例?

[英]How do I create dynamically, and manage, new instances of common data types in Python?

我想制作一個程序,向用戶詢問一個數字(比方說3),並創建3個3x3列表,或3組3個成員或3個Python已經知道的其他復雜數據類型。

許多程序在沒有嚴格編程實例聲明的情況下創建新對象。 例如,在Cinema4D(3D圖形軟件)中,我可以按一個按鈕並創建任意數量的多維數據集。 但是,如果沒有如下所示的書面代碼聲明,我不知道這種自動實例創建的編程機制:

cubeobj cube_1  
cube_1.name("Cube.1") ...

在C ++中,類似這樣的操作需要new運算符和malloc()函數。 Python中有與它們等效的功能嗎?

我在許多Python書籍中進行了搜索,但沒有找到任何東西,什么樣的Python主題會討論類似的內容?

嘗試這個:

num = input()
lst = [[0 for __ in range(num)] for _ in range(num)]

對於特定類型,您應該使用numpy數組或array模塊

如果您需要三重嵌套列表,則可以這樣創建它:

In [1]: num = 3

In [2]: [[[[0 for __ in range(num)] for _ in range(num)]] for ___ in range(num)]
Out[2]: 
[[[[0, 0, 0], [0, 0, 0], [0, 0, 0]]],
 [[[0, 0, 0], [0, 0, 0], [0, 0, 0]]],
 [[[0, 0, 0], [0, 0, 0], [0, 0, 0]]]]

但是,使用numpy可能更容易管理多維數組:

In [3]: import numpy as np

In [4]: np.zeros((num, num, num))
Out[4]: 
array([[[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]]])

但總的來說,您的問題的答案是,您可以通過調用相應的構造函數並通過列表,字典或其他方式使返回的實例保持可訪問性,來創建任意數量的對象。

使用一個假設的多維數據集示例,您可以創建num Cube對象並將它們全部放入列表中:

num = int(input())
cubes = [Cube(name="Cube " + str(i)) for i in range(num)]

好的,我想我已經提出了一個解決方案。 與其嘗試尋找一種創建新列表的方法,不如將我需要的新索引附加到預定義的空列表上,並使用與我的輸入數字相關的for循環和取模,將該線性列表與不相關的列表一樣對待。

我仍然不知道用於自動類實例化的通用編程方法,但是...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM