0

これは私の前の質問の拡張ですが、順序が逆です。つまり、 stringを使用して、すべての有効な文字とハイフンが-t-c-over----持つバイナリ リストを生成する方法はありますか?10

[0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0]
 -  t  -  c  -  o  v  e  r  -  -  -  -

一進一退で申し訳ないのですが、こうしなければなりません。

4

3 に答える 3

6
>>> 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ます。

于 2013-03-02T06:22:48.860 に答える
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]
于 2013-03-02T06:28:47.617 に答える
-1

別のオプションは、ラムダ関数とマップ関数を使用することです。

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]
于 2013-03-02T06:31:27.107 に答える