1

n各要素に 2 つの属性がある要素の配列が必要です。

A.element[0].name="qwe"
A.element[0].age=23
A.element[1].name="www"
A.element[1].age=24
...
A.element[n].name="e"
A.element[n].age=25

クラスの設計を伴わない別の形式はありますか?

4

3 に答える 3

4

ありますcollections.namedtuple

>>> from collections import namedtuple
>>> Element = namedtuple('Element', 'name age')
>>> A.element[0] = Element('qwe', 23)
>>> print A.element[0].name
qwe
>>> print A.element[0].age
23

ただし、これらはリストではなくタプルであるため、変更することはできません。classまた、これらは依然として基本的にクラスですが、キーワードで定義していません。詳細な説明については、これを参照してください。

于 2013-02-24T04:48:36.673 に答える
2

辞書の配列を使用できます。

このようなもの:

A = [
    {'name': 'qwe', 'age': 23},
    {'name': 'www', 'age': 24}
]

次のようなことを行うことで、挿入を簡素化できます。

A = []

def addPerson(name, age):
    global A
    A.append({'name': name, 'age': age})

または、辞書を配列にするだけで、すべての行で「name」と「age」を指定する必要がなくなります。人 (またはそれが何であれ) を表すクラスを作成する方が簡単かもしれません。

于 2013-02-24T04:47:33.743 に答える
1

numpy を使用する場合は、構造体配列も使用できます。

In [66]: struct = np.dtype([("name", np.object), ("age", np.int)])
a = np.array([("abc", 12), ("def", 20), ("xyz", 50)], dtype=struct)
a[0]
Out[66]: ('abc', 12)

In [67]: a[0]["name"]
Out[67]: 'abc'

In [68]: a["name"]
Out[68]: array([abc, def, xyz], dtype=object)

In [69]: a["age"]
Out[69]: array([12, 20, 50])

In [72]: a["age"][2]
Out[72]: 50
于 2013-02-24T06:03:24.363 に答える