4

私は3つの配列、a1、a2、a3を持っています

3つとも一度に戻したいです。

私は持っている

return a1, a2, a3 しかし、それらはすべて同じ行に返されます。新しい行にそれぞれを返す方法を考えていました

4

5 に答える 5

10

こんな感じですか?

>>> def f():
...   a1 = [1, 2, 3]
...   a2 = [4, 5, 6]
...   a3 = [7, 8, 9]
...   return a1, a2, a3
... 
>>> f()
([1, 2, 3], [4, 5, 6], [7, 8, 9])

このように戻り値をアンパックできます

>>> b1, b2, b3 = f()
>>> b1
[1, 2, 3]
>>> b2
[4, 5, 6]
>>> b3
[7, 8, 9]

または、このように3行で印刷します

>>> print "\n".join(str(x) for x in f())
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
于 2012-11-19T05:37:49.627 に答える
1

メソッドから戻ることができるのは 1 回だけです。ただし、別の行でデータにアクセスすることはできます。

def dosomething():
    ...
    return a1, a2, a3

myTuple = dosomething()
first = myTuple[0]
second = myTuple[1]
third = myTuple [2]
于 2012-11-19T05:26:28.093 に答える
1

あなたはできるように求めていますか

return a1
return a2
return a3

それ以外の

return a1, a2, a3

???

もしそうなら、申し訳ありませんが、それはできません。を使用するreturn a1, a2, a3と、実際には 1 つのもの、つまり 3 つのリストのタプルが返されます。return ステートメントを実行すると、現在のスコープ/コンテキストから呼び出し元に戻ります。これがあなたがやろうとしていることではない場合は、あなたが求めていることをもう少し明確に説明してください.

于 2012-11-19T05:24:57.753 に答える
0

配列を文字列のように扱っていると思います。配列は、言うまでもなく「行」にまたがっていません。

多分これはあなたが探しているものです。私が正しく理解していれば。

 return str(a1)+'\n'+str(a2)+'\n'+str(a3)
于 2012-11-19T05:52:06.003 に答える
0

a1、a2、a3が同じ長さの場合、これを試すことができます

a1 = [1, 2, 3]
a2 = [4, 5, 6]
a3 = [7, 8, 9]
[ (a1[x],a2[x],a3[x]) for x in range(len(a1)) ]

>>> [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
于 2012-11-19T05:44:41.217 に答える