這是一個擴展我的previous question但以相反的順序:即,用繩子-t-c-over----
,是有沒有辦法生成二進制列表,所有有效的字母有1
和連字符有0
:從字符串到二進制列表
[0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0]
- t - c - o v e r - - - -
我爲來回感到抱歉,但它必須這樣下去。
這是一個擴展我的previous question但以相反的順序:即,用繩子-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]
你的回答沒有增加任何新內容,也沒有命名變量來表示內置或標準的內容圖書館 – Abhijit 2013-03-02 06:30:00
我真的很抱歉,但當我點擊帖子回答時,沒有答案發布到那時。但由於我的互聯網問題,需要花費太多時間才能發佈。 – 2013-03-02 06:39:37
另一種選擇是使用lambda函數和map函數。
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]
根據python版本,這不一定會創建一個列表。 – Hyperboreus 2013-03-02 07:20:31
你可以更具體地瞭解哪些版本的python這不起作用? – Genzume 2013-03-03 02:03:22
例如在python3.2中。有輸出是一個地圖對象,而不是一個列表。 – Hyperboreus 2013-03-03 02:05:18
謝謝。我被迭代器卡住了,但忘記了這個簡單的方法。 – Rock 2013-03-02 06:24:13
+1:我被我的寶貝卡住了:-) – Abhijit 2013-03-02 06:24:34
@Abhijit好吧,我必須承認你的是一個有趣的方法';'' – Volatility 2013-03-02 06:28:15