从字符串到二进制列表

时间:2013-03-02 06:19:25

标签: python

这是我的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  -  -  -  -

我为来回感到遗憾,但它必须像这样。

3 个答案:

答案 0 :(得分: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]

列表comp会检查字母是否为'-' - 如果是,则会在列表中放置0,否则会将1放入。{/ p>

答案 1 :(得分: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]

答案 2 :(得分:-1)

另一个选择是使用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]