2

あるリストを別のリストに追加した後、Python でリスト内のすべての要素を出力しようとしています。問題は、代わりに PRINT または RETURN を使用すると、すべての要素のみが出力されることです。print を使用すると、リストの最後に「なし」の列にリスト全体が出力されますが、最初の項目だけが出力されます。なんで?

これはコードです:

def union(a,b):
    a.append(b)
    for item in a:
        return item


a=[1,2,3,4]
b=[4,5,6]
print union(a,b)

戻り値:

1

私が使用する場合

def union(a,b):
    a.append(b)
    for item in a:
        print item

a=[1,2,3,4]
b=[4,5,6]
print union(a,b)

代わりに、次のようになります。

1

2

3

4

[4、5、6]

なし

(そして一行でもありません)。

この問題でさらに多くの結果が見つかりました (このようなもの) が、まったく同じではなく、私にとっては非常に複雑であることに注意してください。プログラミングを学び始めたところです。ありがとう!

4

4 に答える 4

9

returnステートメントを使用すると、関数は終了します。最初の値だけを返しています。ループは継続せず、この方法で要素を次々に返すこともできません。

printその値を端末に書き込むだけで、関数を終了しません。ループは続きます。

リストを作成し、それを返します:

def union(a,b):
    a.append(b)
    result = []
    for item in a:
        result.append(a)
    return result

または単に連結を返します:

def union(a, b):
    return a + b
于 2013-07-27T12:06:19.603 に答える
1
def union(a,b):
    a.extend(b)
    for item in a:
        print item,
    return a


a=[1,2,3,4]
b=[4,5,6]
union(a,b)

版画

1 2 3 4 4 5 6
于 2013-07-27T12:08:11.903 に答える
1

return関数の終了を意味します。リストの最初の要素のみを返します。

お使いのprintバージョンでa.append(b)a = [1,2,3,4,[1,2,3]]、 の前に要素が表示されるようになりますNone。関数は何も返さないためprint union(a, b)、None が出力されます。

あなたが望むかもしれないと思います:

def union(a, b):
    a.extend(b)
    return a

または

def union(a, b):
    return a + b
于 2013-07-27T12:06:51.287 に答える