Pythonでリストから要素の出現をすべて削除する方法?

Saykat:
ls = [[1], [1, 2], [1, 2, 3], [], [2], [2, 3], [], [], [3]]

私は一度にすべての同様の項目を削除できるようになります任意のPythonのリストの方法があります。例えば、私は3つの空のリスト項目を有する2Dリスト「LS」を有します[]。私は一度にすべての空のリスト項目を削除します。私はそれが「削除」として行うことができます知っている「ループ」。しかし、一度に操作を行うための任意の方法はありますか?シンプルであるために:私はすべての「[]」を削除することにしたいです。したがって、答えは次のようになります。[[1], [1, 2], [1, 2, 3], [2], [2, 3], [3]]

illiteratecoder:

そこにはありませんremove_all方法またはそのようなものは、これを達成するための最良の方法は、リスト内包していますかfilter

仮定すると、ls他のリストが含まれているだけあなたは空のリストの出現をすべて削除するには、次の書くことができます[]

一覧理解

ls = [[1], [1, 2], [1, 2, 3], [], [2], [2, 3], [], [], [3]]
ls = [x for x in ls if x]
# now ls =  [[1], [1, 2], [1, 2, 3], [2], [2, 3], [3]]

フィルタ

ls = [[1], [1, 2], [1, 2, 3], [], [2], [2, 3], [], [], [3]]
ls = list(filter(None, ls))
# now ls =  [[1], [1, 2], [1, 2, 3], [2], [2, 3], [3]]

ちょうど空のリストより多くのための一般化

あなたが与えられた要素の出現をすべて削除したい場合elem(つまり、空リストではありません)次のように上記のコードを変更することができます。

ls = [x for x in ls if x != elem]

##### or #####

ls = list(filter(lambda x: x != elem, ls))

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=298949&siteId=1