これは私の前の質問の拡張ですが、順序が逆です。つまり、 stringを使用して、すべての有効な文字とハイフンが-t-c-over----
持つバイナリ リストを生成する方法はありますか?1
0
[0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0]
- t - c - o v e r - - - -
一進一退で申し訳ないのですが、こうしなければなりません。
>>> s = '-t-c-over----'
>>> lst = [0 if i == '-' else 1 for i in s]
>>> print lst
[0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0]
リストコンプは、文字がそうであるかどうかをチェックします'-'
-そうである場合は0
、リストに入れます。そうでない場合は、を入れ1
ます。
これを使用できます
string = "-t-c-over----"
[0 if i == "-" else 1 for i in string]
Output: [0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0]
別のオプションは、ラムダ関数とマップ関数を使用することです。
s = '-t-c-over----'
output = map(lambda x: 0 if x == '-' else 1, s)
編集: どうやらこれは Python 3.2 では機能しないため、実際の解決策は次のようになります。
s = '-t-c-over----'
output = [0 if x == '-' else 1 for x in s]