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

时间:2021-07-11 18:01:07

标签: python python-3.x algorithm list-comprehension

我有以下列表:

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。

1 个答案:

答案 0 :(得分:1)

给你:

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)]