根据条件拆分列表中的数据

Split data in list based on condition

我有以下列表:

data = ['A1', 'C3', 'B2', 'A2', 'D3', 'C2', 'A3', 'D2', 'C1', 'B1', 'D1', 'B3']

我想拆分列表,这样

split1 = ['A1', 'C3', 'B2', 'A2', 'C2', 'A3', 'C1', 'B1', 'B3']
split2 = ['D3', 'D2', 'D1']

约束是具有相同前缀(A、B 等)的项目不能出现在单独的列表中。数据可以按任何比例拆分,例如 50-50、80-20。

给你:

import numpy as np
data = np.array(['A1', 'C3', 'B2', 'A2', 'D3', 'C2', 'A3', 'D2', 'C1', 'B1', 'D1', 'B3'])

# define some condition
condition = ['B', 'D']
boolean_selection = [np.any([ c in d for c in condition]) for d in data]

split1 = data[boolean_selection]
split2 = data[np.logical_not(boolean_selection)]