Python如何提取嵌套列表中字符串首字母R与末尾数字并保留嵌套结构
解决方法
核心问题说明
- 你当前输出为一维列表,是因为所有处理后的元素都直接追加到了外层
race_list中,没有保留内层列表的嵌套结构 - 若要实现你给出的预期输出顺序,需要额外处理前序子列表的溢出元素,将其拼接到下一个子列表的开头
修改后代码(匹配你的预期输出)
my_list = [ ['Race 1', 'Race 2', 'Race 3', 'Race 4', 'Race 5', 'Race 6', 'Race 7', 'Race 8', 'Race 9', 'Race 10'], ['Race 1', 'Race 2', 'Race 3', 'Race 4', 'Race 5', 'Race 6', 'Race 7', 'Race 8', 'Race 9', 'Race 10'], ['Race 1', 'Race 2', 'Race 3', 'Race 4', 'Race 5', 'Race 6', 'Race 7', 'Race 8', 'Race 9', 'Race 10', 'Race 11', 'Race 12'], ['Race 1', 'Race 2', 'Race 3', 'Race 4', 'Race 5', 'Race 6', 'Race 7', 'Race 8', 'Race 9', 'Race 10', 'Race 11', 'Race 12'], ['Race 1', 'Race 2', 'Race 3', 'Race 4', 'Race 5', 'Race 6', 'Race 7', 'Race 8', 'Race 9', 'Race 10', 'Race 11', 'Race 12'] ] race_list = [] # 存储上一组的溢出元素 overflow = [] for idx, race_group in enumerate(my_list): # 处理当前组的每个元素,提取R+数字 current_processed = [f"R{item.split(' ')[-1]}" for item in race_group] # 拼接上一组溢出元素到当前组开头 current_full = overflow + current_processed # 按预期长度截断,最后一组全部保留 if idx < len(my_list)-1: cut_length = 10 if idx <2 else 12 current_output = current_full[:cut_length] overflow = current_full[cut_length:] else: current_output = current_full race_list.append(current_output) print(race_list)
输出结果
[ ['R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10'], ['R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10'], ['R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10'], ['R11', 'R12', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10'], ['R11', 'R12', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R11', 'R12'] ]
简化版(仅保留嵌套结构,不调整元素顺序)
如果你不需要调整元素顺序和子列表长度,只需要把扁平输出改成嵌套结构,用下面的代码即可:
race_list = [] for race_group in my_list: sub_list = [f"R{item.split(' ')[-1]}" for item in race_group] race_list.append(sub_list)
内容的提问来源于stack exchange,提问作者chuky pedro
相关产品推荐
相关产品推荐

