1

複数の変数を1つにまとめて、配列やリストのように順番に保持する必要があります。これはPythonで行う必要があり、私はまだPythonの初期段階にあります。

例:Pythonの場合:

a = Tom
b = 100
c = 3.14
d = {'x':1, 'y':2, 'z':3}

上記のすべてを1つのシーケンシャルデータ構造にまとめました。わかりやすくするために、おそらくC++で実行したのと同様の実装を試すことができます。

struct
{ 
string a;
int b;
float c;
map <char,int> d;// just as an example for dictionary in python
} node;

vector <node> v; // looking for something like this which can be iterable

誰かが私に保存のための同様の実装を与えることができれば、コンテンツを繰り返して変更することは本当に役に立ちます。正しい方向へのポインタも私には良いです。

ありがとう

4

3 に答える 3

3

Michaelが提案するような辞書を使用するか(ただし、 vwithの内容にアクセスする必要がありますが、これは少し面倒です)、 C ++の構造体v['a']に相当するものを使用できます:名前付きタプル

import collections

node = collections.namedtuple('node', 'a b c d')

# Tom = ...

v = node(Tom, 100, 3.14, {'x':1, 'y':2, 'z':3})
print node  # node(a=…, b=100, c=3.14, d={'x':1, 'y':2, 'z':3})
print node.c  # 3.14
print node[2]  # 3.14 (works too, but is less meaningful and robust than something like node.last_name)

これは、独自のクラスを定義するのと似ていますが、より簡単ですtype(v) == node。など。ただし、火山が指摘したように、に格納されている値namedtupleは変更できないことに注意してください(anamedtupleは不変です)。

レコード内の値を実際に変更する必要がある場合、最適なオプションはクラスです。

class node(object):
    def __init__(self, *arg_list):
        for (name, arg) in zip('a b c d'.split(), arg_list):
            setattr(self, name, arg)

v = node(1, 20, 300, "Eric")
print v.d  # "Eric"
v.d = "Ajay"  # Works

私がお勧めしない最後のオプションは、ATOzTOAが述べているように、実際にはリストまたはタプルを使用するnode[3]ことです。要素はあまり読みにくい方法でアクセスする必要がありますnode.last_name。また、リストまたはタプルを使用する場合、フィールドの順序を簡単に変更することはできません(一方、名前付きタプルまたはカスタムクラス属性にアクセスする場合、順序は重要ではありません)。


通常、複数nodeのオブジェクトがリストに入れられます。これは、このような目的のための標準のPython構造です。

all_nodes = [node(…), node(…),…]

また

all_nodes = []
for … in …:
    all_nodes.append(node(…))

また

all_nodes = [node(…) for … in …]

最適な方法は、さまざまなnodeオブジェクトの作成方法によって異なりますが、多くの場合、リストが最適な構造である可能性があります。

ただし、スプレッドシートテーブルに似たものを保存する必要があり、その列にアクセスするための速度と機能が必要な場合は、NumPyのレコード配列またはPandasのようなパッケージを使用した方がよい場合があります。

于 2013-01-08T08:27:33.673 に答える
1

すべての値をディクショナリに入れて、これらのディクショナリのリストを作成できます。

{'a': a, 'b': b, 'c': c, 'd': d}

それ以外の場合、このデータがクラスで表すことができるものである場合、たとえば「Person」。Person型のクラスを作成し、データを使用してそのクラスのオブジェクトを作成します。

http://docs.python.org/2/tutorial/classes.html

于 2013-01-08T08:24:33.830 に答える
1

リストを使用するだけです。

a = "Tom"
b = 100
c = 3.14
d = {'x':1, 'y':2, 'z':3}

data = [a, b, c, d]

print data
for item in data:
    print item

出力:

['Tom', 100, 3.14, {'y': 2, 'x': 1, 'z': 3}]
Tom
100
3.14
{'y': 2, 'x': 1, 'z': 3}
于 2013-01-08T08:28:40.467 に答える