这是我上一个问题的扩展,但顺序相反:也就是说,使用 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]
列表 comp 检查一个字母是否是'-'
- 如果是,它将 a0
放入列表中,否则将 a 放入列表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]
另一种选择是使用 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]