从元组中提取模式



我有一个元组列表

a=[('a', 0), ('c', 1), ('d', 0), ('b', 1), ('t',1), ('j',2), ('k',3), ('s', 4), ('l',1), ('y',1), ('r',2), ('b',3), ('k',4)]

我想要像一样的输出

[[1,1,1,2,3,4],[1,1,2,3,4]] 

和相应的字母

[['c', 'b', 't', 'j', 'k', 's'], ['l', 'y', 'r', 'b', 'k']]

我需要删除中间的0,并且模式总是以1 开始

使用一个简单的循环并跟踪以前的非零值:

letters = []
numbers = []
prev = 2
for l,n in a:
if n == 0:
continue
elif prev > 1 and n == 1:
letters.append([])
numbers.append([])
letters[-1].append(l)
numbers[-1].append(n)
prev = n
letters
# [['c', 'b', 't', 'j', 'k', 's'], ['l', 'y', 'r', 'b', 'k']]
numbers
# [[1, 1, 1, 2, 3, 4], [1, 1, 2, 3, 4]]

最新更新