2

鉴于此列表:

['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']

它也需要分组。你能提供一些整洁的解决方案吗?

4

1 回答 1

3

采取假设:

  • 单词只是字母字符串
  • 一个块以 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]
于 2013-05-31T16:37:19.373 回答