1/0のリストをbooleanのリストに変換しようとしています。python:1/0sのリストをbooleanのリストに変換する
bool([1,0,1,0])
は機能していないようです。 [1,0,1,0] == 1
は機能しません。
別の方法(うまくいけば非リストの理解)がありますか? python 3では
1/0のリストをbooleanのリストに変換しようとしています。python:1/0sのリストをbooleanのリストに変換する
bool([1,0,1,0])
は機能していないようです。 [1,0,1,0] == 1
は機能しません。
別の方法(うまくいけば非リストの理解)がありますか? python 3では
bool_list = map(bool,int_list)
:
bool_list = list(map(bool,int_list))
恐らく 'map'はPython 3のリストを返しません。 – Sayse
はい。ありがとう@Sayse –
リストの内包表記を使用して、これを試してみてください:
lst = [1, 0, 1, 0]
[bool(x) for x in lst]
=> [True, False, True, False]
[x==1 for x in list]
は、あなたが簡単にできる一般的なアプローチでありますあなたがentとのリストを持っていれば適応するまたは0
または1
以外のries。
これは、すでに投稿された3つのうち、最も速い方法です: 'map()'の.31秒vs .54秒、 'bool()'の.60 timeitによる – TemporalWolf
の@TemporalWolf私は確信していません。 – miradulo
@Mitchその後、自分でtimeitを実行します。一般化された 'timeit.timeit(" x instのxは0でない "、" lst = [1、0、1、0] ")' bool() 'バージョンの半分で実行されます(これはすべてのintをboolに変換します)。 – TemporalWolf
numpy
モジュール使用溶液:
import numpy as np
l = np.array([1,0,1,0])
print((l > 0).tolist())
出力:
[True, False, True, False]
l > 0
を - それは0
よりも大きいかどうアレイl
の各要素は、試験されます。
l = np.array([[1,0,1,0], [1,1,1,1], [0,0,1,0]])
print((l > 0).tolist())
出力:
[[True, False, True, False], [True, True, True, True], [False, False, True, False]]
のブール要素であります
可読性の面では、bool()
とmap()
が適しています。速度の面では、彼らが早く約半分です:
のPython 3.5.2(repl.it)の場合:ただし少しだけ速く
より[not not x for x in lst]
は、他の3つのオプションよりも高速ですPythonの2.7.10用
[x==1 for x in lst]
(repl.it):
x==1
エッジアウトnot not
ですが、両方ともまだ他の2倍の2倍の速さです。
not not
、それはすべての値に適用されるという点でも、あなたが実際にあなたのため、解決しようとしているものがある、これはXYの問題のように思える、0
と1
ないだけを
x==1
以上の利点を持っていますブール値として1と0を使用することができ、それでも機能します... – MooingRawrなぜあなたはリスト内包表記を使いたくありませんか? – BrenBarn
後継用:[Python 3.5.2](https://repl.it/F5K7/2)と[Python 2.7.10](https://repl.it/F5K4/1)のさまざまな回答の速度比較、パフォーマンスによってソートされます。 – TemporalWolf