鉴于此列表:['IND', 'MIA', '06:37 AM', '103', 'LA', 'SUN', '06:49 AM', '-150', '120']我想将最终结果的列表分组(组成元组):[('IND', 'MIA', '06:37 AM', '103'), ('LA', 'SUN', '06:49 AM', '-150', '120')]含义组是一个以单词开头的值的列表(实际上总是有2个连续的单词),在这里:IND之后是一些其他值,直到另一个单词,在这里:LA。所有单词对可能都是身份证的,例如,这将是有效列表:['IND', 'MIA', '06:37 AM', '103', 'IND', 'MIA', '06:49 AM', '-150', '120']它也需要分组。您能提供一些整洁的解决方案吗?
1 回答
UYOU
TA贡献1878条经验 获得超4个赞
采取以下假设:
单词仅是字母字符串
一个块以k个单词开头,k> = 1(显然是两个)
列表元素的数据部分中没有单词
一种方法是按单词和数据分组,然后建立列表理解以将对配对:
import itertools as it
data = ['IND', 'MIA', '06:37 AM', '103', 'LA', 'SUN', '06:49 AM', '-150', '120']
g = it.groupby(data, str.isalpha)
[tuple(v)+tuple(next(g)[1]) for _, v in g]
添加回答
举报
0/150
提交
取消