0

ボックス 1、ボックス 2、ボックス 3 などと呼ばれる、それぞれに 2 つの項目を含む一連のリストがあり、後でアクセスするためにマスター リストに追加しようとしています。以下はうまくいくと思ったものですが、そうではありません。メソッド内の文字列が にappend追加されたものではないかと思いますiが、よくわかりません。

これは明らかに文字列 box + を追加するだけですiが、ループして同じ名前のすべてのアイテムをこのリストに追加する方法を見つける必要があります。この目標を達成するための最良の方法は何ですか?

box1 = [1,2]
box2 = [3,4]
boxes = []

##Adding strings. I need to add box items instead.
for i in range(11):
    boxes.append("box" + str(i))

これを見たい:

boxes = [[1,2],[3,4]]

参考までに、使用できるソフトウェアが限られているため、インポートしたライブラリを使用することはできません。

4

7 に答える 7

1
for i in range(11):
    box = locals().get('box' + str(i))
    if box is not None:
        boxes.append(box)

私の意見では、コードをリファクタリングして、変数などを定義する代わりに、辞書を作成してから次のようなことを行う方がよいことに注意しbox1box2くださいbox_dict['box1'] = [1, 2]。これにより、後でこれらのリストを名前で簡単に検索できます。

于 2013-06-14T16:09:45.520 に答える
0

あなたの質問は Stack Overflow question Convert a string to preexisting variable namesに似ていますが、時間を節約するためgetattr(object, name)に、オブジェクトから特定の名前の変数を取得するために使用できます。

次のようなものがあるかもしれません:

for i in range(11):
    boxes.append(getattr(self, "box"+i))
于 2013-06-14T16:08:55.293 に答える