これは私のコードです:Pythonリストから何らかの値が出現するたびに削除されますか?
a = [1,2,3,43,43,43]
count = a.count(43)
if count > 0:
for i in range(count):
a.remove(43)
print a
は、これを達成するための簡単な方法はありますか?
これは私のコードです:Pythonリストから何らかの値が出現するたびに削除されますか?
a = [1,2,3,43,43,43]
count = a.count(43)
if count > 0:
for i in range(count):
a.remove(43)
print a
は、これを達成するための簡単な方法はありますか?
は
a = [x for x in a if x != 43]
を試してみて、あなただけのリストa
内のすべての43Sを削除したいですか?場所にオリジナルのものを修正する新しいリストを作成し、しません(削除、しかし、1つは、非線形実行時間を持って使用して1を除く)
a = [x for x in a if x != 43]
少しのタイプミスがありますか?それは '[x in a x ...ではなく、' [x for a....'ではないでしょうか? –
はい、そうです。私は編集しました。 – minhee
注上記のすべてのソリューションという。これはあなたのケースでは問題になるかもしれません。元のリストを変更する場合は、次のようなスライスの割り当てを使用する必要があります。
a[:] = [value for value in a if value != 43]
ここでスライスの割り当てが必要なのはなぜですか? –
私はコードの上のコメントで言うように、これは元のリストを変更したい場合です。これは、関数の引数としてリストが渡され、関数が呼び出し側が見たリストを変更するという副作用があると考えている場合には重要です。 –
+1ああ、良い例! –
これも素晴らしいアルゴリズムではありません。あなたが 'a.remove(43)'を実行するたびに、Pythonはリストの最初から再び開始するので、あなたは値[1,2,3]を繰り返しテストしています。ビッグO表記では、これはO(n^2)です。 O(n) –