python 中的分组列表
Grouping list in python
如何通过值连续的分组将列表 A 转换为列表 B?
这意味着 'timeStart_timeEnd_itemName' 如果 first timeEnd 等于 next loop timeStart 和 itemName 是相同的然后追加到像列表 B 这样的子列表组中?
输入
A = ['1070914_1070915_itemA',
'1070915_1070921_itemA',
'1070921_1070928_itemA',
'1071005_1071008_itemA',
'1071115_1071223_itemA',
'1071223_1071224_itemA',
'1071225_1071229_itemB']
结果
B = [['1070914_1070915_itemA',
'1070915_1070921_itemA',
'1070921_1070928_itemA'],
['1071005_1071008_itemA'],
['1071115_1071223_itemA',
'1071223_1071224_itemA'],
['1071225_1071229_itemB']
]
这是基于您在我假设的地方分享的示例的解决方案:
- 您的时间序列列表已根据开始和结束时间排序
- 列表中没有两个元素重叠 start/end 时间 window
这是实现此目的的示例代码:
my_list = [
'1070914_1070915_itemA',
'1070915_1070921_itemA',
'1070921_1070928_itemA',
'1071005_1071008_itemA',
'1071115_1071223_itemA',
'1071223_1071224_itemA',
'1071225_1071229_itemB'
]
new_list = [[my_list[0]]]
for a, b in zip(my_list, my_list[1:]):
a_tup, b_tup = a.split('_'), b.split('_')
if a_tup[1] != b_tup[0]:
new_list.append([])
new_list[-1].append(b)
其中 new_list
将 return 你:
[[
'1070914_1070915_itemA',
'1070915_1070921_itemA',
'1070921_1070928_itemA'
],[
'1071005_1071008_itemA'
],[
'1071115_1071223_itemA',
'1071223_1071224_itemA'
],[
'1071225_1071229_itemB'
]]
如何通过值连续的分组将列表 A 转换为列表 B? 这意味着 'timeStart_timeEnd_itemName' 如果 first timeEnd 等于 next loop timeStart 和 itemName 是相同的然后追加到像列表 B 这样的子列表组中?
输入
A = ['1070914_1070915_itemA',
'1070915_1070921_itemA',
'1070921_1070928_itemA',
'1071005_1071008_itemA',
'1071115_1071223_itemA',
'1071223_1071224_itemA',
'1071225_1071229_itemB']
结果
B = [['1070914_1070915_itemA',
'1070915_1070921_itemA',
'1070921_1070928_itemA'],
['1071005_1071008_itemA'],
['1071115_1071223_itemA',
'1071223_1071224_itemA'],
['1071225_1071229_itemB']
]
这是基于您在我假设的地方分享的示例的解决方案:
- 您的时间序列列表已根据开始和结束时间排序
- 列表中没有两个元素重叠 start/end 时间 window
这是实现此目的的示例代码:
my_list = [
'1070914_1070915_itemA',
'1070915_1070921_itemA',
'1070921_1070928_itemA',
'1071005_1071008_itemA',
'1071115_1071223_itemA',
'1071223_1071224_itemA',
'1071225_1071229_itemB'
]
new_list = [[my_list[0]]]
for a, b in zip(my_list, my_list[1:]):
a_tup, b_tup = a.split('_'), b.split('_')
if a_tup[1] != b_tup[0]:
new_list.append([])
new_list[-1].append(b)
其中 new_list
将 return 你:
[[
'1070914_1070915_itemA',
'1070915_1070921_itemA',
'1070921_1070928_itemA'
],[
'1071005_1071008_itemA'
],[
'1071115_1071223_itemA',
'1071223_1071224_itemA'
],[
'1071225_1071229_itemB'
]]