0

私は CodeAcademy に取り組んでいますが、回答が得られていない質問があります。割り当ては、リストのリストを取得し、そのすべての要素の単一のリストを作成することです。すぐ下のコードは、うまくいった私の答えです。しかし、私が理解していないのは、「アイテム」がそのコードのリスト内の要素として扱われる理由です(以下に続くコメントを参照)...

m = [1, 2, 3]
n = [4, 5, 6]
o = [7, 8, 9]

def join_lists(*args):
    new_list = []
    for item in args:        
        new_list += item
    return new_list


print join_lists(m, n, o)

...以下のコードの「項目」は、リスト内の要素ではなく、リスト全体として扱われます。以下のコードは出力を提供します。

 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

私も使用しようとしました: new_list.append(item[0:][0:])は、インデックスとサブインデックスを反復処理すると考えていましたが、同じ結果が得られました。これがどう解釈されているのかさっぱりわかりません。

m = [1, 2, 3]
n = [4, 5, 6]
o = [7, 8, 9]


def join_lists(*args):
    new_list = []
    for item in args:        
        new_list.append(item)
    return new_list


print join_lists(m, n, o)

また、上記のコードに別の for ループを追加できることはわかっており、それが機能する理由はわかりますが、Python がこれらを異なる方法で解釈する理由を 1 行の違いで理解できません。

4

2 に答える 2

8

リストの+=インプレース add 演算子は、list.extend()onを呼び出すのと同じことを行いnew_listます。.extend()イテラブルを取り、すべての要素をリストに追加します。

list.append()一方、単一のアイテムをリストに追加します。

>>> lst = []
>>> lst.extend([1, 2, 3])
>>> lst
[1, 2, 3]
>>> lst.append([1, 2, 3])
>>> lst
[1, 2, 3, [1, 2, 3]]
于 2013-06-21T16:36:44.570 に答える