我试图搜索一个十六进制值的列表,当我看到一个'55'时,将它们拆分成单独的列表。十六进制值列表如下所示
['55', '00', '09', '07', '01', '56', 'd2', '40', '00', 'f0', '05', '91',
'73', '06', '00', '00', 'ff', 'ff', 'ff', 'ff', '44', '00', 'fd', '55',
'00', '0a', '07', '01', 'eb', 'd2', '00', '48', 'ff', 'ff', '01', 'a8',
'90', '6d', '00', '00', 'ff', 'ff', 'ff', 'ff', '38', '00', '3c', '55',
'00', '0c', '07', '01', '96', 'd2', '40', '00', '20', '02', '00', '30',
'05', '80', 'df', '10', '00', '00', 'ff', 'ff', 'ff', 'ff', '4a', '00',
'52', '55', '00', '09', '07', '01', '56', 'd2', '40', '02', '40', '05',
'0b', '23', '48', '00', '00', 'ff', 'ff', 'ff', 'ff', '50', '00', 'c1',
'55', '00', '0c', '07', '01', '96', 'd2', '40', '00', '00', '00', '00',
'00', '05', '80', 'ba', 'db', '00', '00', 'ff', 'ff', 'ff', 'ff', '47',
'00', 'd9', '55', '00', '09', '07', '01', '56', 'd2', '40', '01', '30',
'01', '9a', 'c0', '56', '00', '00', 'ff', 'ff', 'ff', 'ff', '40', '00',
'f6', '55', '00', '09', '07', '01', '56', 'd2', '40', '00', 'b0', '05',
'82', 'e1', '76', '00', '00', 'ff', 'ff', 'ff', 'ff', '58', '00', '27',
'55', '00', '0c', '07', '01', '96', 'd2', '40', '00', '20', '03', '00',
'30', '05', '80', 'df', '27', '00', '00', 'ff', 'ff', 'ff', 'ff', '52',
'00', 'f8']`.
使用下面的代码,我只得到最后一个列表。
for x in line:
if x == '55':
count+=1
linetwo = x
else:
linetwo += x
print(linetwo)
i、 e.输出为 55000c070196d24000200300300580df270000ffffffff5200f8
但我想 ['550009070156d24000f0059173060000ffffffff4400fd', '55000a0701ebd20048ffff01a8906d0000ffffffff38003c'....
等,待输出
4条答案
按热度按时间b1payxdu1#
一个更干净的解决问题的方法可以是这样
哪里
a
是以下列表:结果:
ac1kyiln2#
你可以用
itertools.groupby
具体如下:这将产生
oyxsuwqo3#
你在重写
linetwo
每次你到达一个新的'55'
,则应在生成结果时将结果附加到列表中,而不是放弃上一个结果:或者你可以使用
join
,split
以及map
:这个
join
将所有数据合并在一起:这个
split
然后切片([1:]
)分离数据并删除前面的空元素:以及
map
重新连接55
到每一页的开头list
呼叫只是将其从map
对象返回到list
用于打印)。pgccezyw4#
您可以定义一个接受 predicate 的生成器,如下所示:
然后您可以调用它来传递要应用的所需操作:
结果是: