Python 如何将0和1分开?
你好,我有这样的号码:Python 如何将0和1分开?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,你好,我有这样的号码: a = "00001" b = "00011" c = "00111" d = "01001" e = "10001" a = "00001" => "0000", "1" b = "00011" => "000", "11" c = "00111" => "00", "111" d = "01001" => "0", "1", "00", "1" e = "10001" => "1", "000", "1" 我想要这样的东西: a
a = "00001"
b = "00011"
c = "00111"
d = "01001"
e = "10001"
a = "00001" => "0000", "1"
b = "00011" => "000", "11"
c = "00111" => "00", "111"
d = "01001" => "0", "1", "00", "1"
e = "10001" => "1", "000", "1"
我想要这样的东西:
a = "00001"
b = "00011"
c = "00111"
d = "01001"
e = "10001"
a = "00001" => "0000", "1"
b = "00011" => "000", "11"
c = "00111" => "00", "111"
d = "01001" => "0", "1", "00", "1"
e = "10001" => "1", "000", "1"
我怎样才能拆分这个号码
多谢各位 将字符串划分为所需的子列表
def encode(s):
result, prev = [], ''
for v in s:
if not prev or prev[-1] == v:
# continue current pattern
prev += v
else:
# pattern change
result.append(prev)
prev = v
if prev:
result.append(prev)
return result
a = "00001"
b = "00011"
c = "00111"
d = "01001"
e = "10001"
for s in [a, b, c, d, e]:
print(s, encode(s))
输出
00001 ['0000', '1']
00011 ['000', '11']
00111 ['00', '111']
01001 ['0', '1', '00', '1']
10001 ['1', '000', '1']
Python的一个优点是有很多方法可以完成相同的任务。下面是另一个使用regex的方法 我扩展了您的示例,以显示它仅适用于0或1
import re
a = "00001"
b = "00011"
c = "00111"
d = "01001"
e = "10001"
f = "52255"
g = "90099"
h = "81811"
def parse(s):
"""Parse binary string into like groups."""
f = re.findall('([0]+)|([1]+)', s)
return [z if z else o for z, o in f]
for i in [a, b, c, d, e, f, g, h]:
print(i, parse(i))
输出:
groupby
就是为此而设计的
导入itertools
def groupthem(二进制):
“”“将二进制1和0分别分组。
>>>groupthem(“00001”)
["0000", "1"]
>>>分组他们(“00011”)
["000", "11"]
>>>分组他们(“01001”)
["0", "1", "00", "1"]
"""
groups=itertools.groupby(二进制)
return[“”.加入(组)for u,分组]
检查答案可能重复,它可以根据您的问题进行调整