私はリストの理解を条件として生成しているリストの長さを使用したいと思います。 )関数自体リストの理解のための任意の関数の条件としてのリストの長さ
私は2つのラインでこれを行うことができます -
li = [1,2,3,4]
lcond = [x for x in li if x > 3]
any(lcond) and len(lcond) >2
しかし、私はあなたが本当にここにリストの内包を必要としない1
私はリストの理解を条件として生成しているリストの長さを使用したいと思います。 )関数自体リストの理解のための任意の関数の条件としてのリストの長さ
私は2つのラインでこれを行うことができます -
li = [1,2,3,4]
lcond = [x for x in li if x > 3]
any(lcond) and len(lcond) >2
しかし、私はあなたが本当にここにリストの内包を必要としない1
でそれを行うにしたいと思います。 Pythonの3では
if len(filter(lambda x: x > 3, li)) > 2:
、明示的filter
によって返された発電機を消費する必要があります。
if len(list(filter(lambda x: x > 3, li))) > 2:
実は、なぜ私はここでもfilter
を使用していますか?
if len([x for x in li if x > 3]) > 2:
any
リストの非ゼロの長さはany(...)
がtrueを返すということを意味しているため、不要です。
ジェネレータのためにPython3で動作しません。 – Hamlett
あなたのリストが非常に大きい場合は、 は条件を満たしている項目が少なくとも2つあるかどうかを知るためにリスト全体を調べないことをお勧めします。
test_list = [1,2,3,4]
# Returns False
len(list(itertools.islice(filter(lambda x: x>3, test_list), 2))) == 2
test_list = [1,2,3,4,5,6,7,8]
# Returns True
len(list(itertools.islice(filter(lambda x: x>3, test_list), 2))) == 2
それは、より複雑であるが、リストが巨大である場合には、リスト全体を通過しない方が良いです:
は、私はそのような発電機の上に適用itertollsからisliceを使用することをお勧めします。
*「私は1つでやりたい」* - なぜですか?あなたはキャラクターによって請求されますか?読み取り可能なコードを書く! – jonrsharpe
明示的は暗黙的より優れています。 [Python Zen](https://www.python.org/dev/peps/pep-0020/)。 – Hamlett
'any(lcond)'とは何ですか? –