私はPythonの初心者であり、短いリストの値で条件を満たすときに単純にリストの値を置き換えようとしています。例えばリスト要素を短いリストの値で条件付きで置き換えよう
:
list1 = [1,0,1,0,1,0]
list2 = [1,2,3]
私が欲しいの出力は次のようになります。
list1 = [1,1,1,2,1,3]
私はカウンターでループを使用することができます。
counter = 0
for i, j in enumerate(list1):
if j == 1:
list1[i] = list2[counter]
counter += 1
しかし、これはそう何かのために非効率ですシンプルなので、リストの理解でこれを行う方法があると思います。
[list2[i] if j == 0 else j for i,j in enumerate(list1)]
(ただし、リストの長さが異なるために失敗します)。
ベースpythonでこれを行う他の簡潔な方法は、おそらくmap
またはfilter
を使用していますか?
短いコードは必ずしも効率的なコードではありません。これがコードゴルフの挑戦でない限り、私はあなたが持っている解決策に何が間違っているのか見当たりません。 – mypetlion
良い点ですが、私はこのタイプの操作を他の言語(論理インデックスを使用することができる)で多く使用していると思いますし、入力の容易さの点で似たようなものを探しています。 –