リストの内容を取得して別のリストに追加する [重複] 質問する

リストの内容を取得して別のリストに追加する [重複] 質問する

リストの内容を取得して別のリストに追加することが理にかなっているかどうかを理解しようとしています。

ループ関数を使用して最初のリストを作成しました。このリストはファイルから特定の行を取得してリストに保存します。

次に、2 番目のリストを使用してこれらの行を保存し、別のファイルに対して新しいサイクルを開始します。

私のアイデアは、for サイクルが完了したらリストを取得し、それを 2 番目のリストにダンプし、新しいサイクルを開始し、最初のリストの内容を 2 番目のリストに再度ダンプして追加することで、2 番目のリストがループで作成されたすべての小さなリスト ファイルの合計になるようにすることでした。リストは、特定の条件が満たされた場合にのみ追加する必要があります。

次のような感じになります:

# This is done for each log in my directory, i have a loop running
for logs in mydir:

    for line in mylog:
        #...if the conditions are met
        list1.append(line)

    for item in list1:
        if "string" in item: #if somewhere in the list1 i have a match for a string
            list2.append(list1) # append every line in list1 to list2
            del list1 [:] # delete the content of the list1
            break
        else:
            del list1 [:] # delete the list content and start all over

これは理にかなっていますか、それとも別の方法を取るべきでしょうか?

ログのリストが長く、各テキスト ファイルもかなり大きいため、あまり多くのサイクルを消費しない効率的なものが必要でした。そのため、リストが目的に適うと考えました。

ベストアンサー1

おそらくあなたは

list2.extend(list1)

の代わりに

list2.append(list1)

違いは次のとおりです。

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = [7, 8, 9]
>>> b.append(a)
>>> b
[4, 5, 6, [1, 2, 3]]
>>> c.extend(a)
>>> c
[7, 8, 9, 1, 2, 3]

list.extend()は任意の反復可能オブジェクトを受け入れるので、

for line in mylog:
    list1.append(line)

による

list1.extend(mylog)

おすすめ記事