1

Python には、可変長のリストを含む「list1」というリストがあります。

add の最初の要素が list1 のどのリストの最初の要素でもない場合、その長いリストに 2 番目のリスト「add」を追加したいと思います。

このコードは機能します:

list1 = [["a", 5, 9, 22], ["b", 10, 1], ["c"], ["d", 42]]

add = ["e", 1, 31]
add2 = ["b", 1, 31]

temp = []
for e in list1:
    temp.append(e[0])

if add[0] not in temp:
    list1.append(add)

予想どおり、add2 は追加されませんが、add は list1 に追加されます。

ただし、一時リストの作成を回避する、よりエレガントで効果的な方法があるのではないかと思います。

4

1 に答える 1

1

all()ジェネレータ式を使用してテストできます。

if any(add[0] != elem[0] for elem in list1):
    list1.append(add)

関数はall()、含まれているジェネレーター式をループして、値が含まれていることをテストしますが、 (に等しい)にTrue遭遇すると停止します。これにより、がすでに存在するかどうかを確認するためにすべてをループする必要がなくなります。Falseadd[0]elem[0]list1elem[0]

于 2013-03-11T15:18:22.020 に答える