遍历单层嵌套列表,按子列表顺序用字母替换指定字符串'X'
替换嵌套列表中的'X'为顺序英文字母(子列表独立从'A'开始)
问题描述
我有一个单层嵌套列表xlist,结构如下(注:原代码中空值为示意,实际Python中需用None或其他合法占位符替代):
xlist = [[None, None, None, None, 'X', None, 'X', 'X', None, 'X', None], ['X', None, None, 'X', None, 'X', 'X', 'X'], [None, None, None, 'X', None, 'X', None, 'X', None, None, None, 'X']]
需求:将每个子列表中的'X'按出现顺序依次替换为英文字母,每个子列表从'A'开始独立计数,空值需保留以匹配其他列表结构,最终得到目标列表alist:
alist = [[None, None, None, None, 'A', None, 'B', 'C', None, 'D', None], ['A', None, None, 'B', None, 'C', 'D', 'E'], [None, None, None, 'A', None, 'B', None, 'C', None, None, None, 'D']]
解决方案
实现思路
- 遍历外层列表的每个子列表
- 为每个子列表单独维护计数器,记录当前替换的字母序号
- 遍历子列表元素:遇到'X'则替换为对应英文字母,同时递增计数器;非'X'元素直接保留
Python 代码实现
xlist = [[None, None, None, None, 'X', None, 'X', 'X', None, 'X', None], ['X', None, None, 'X', None, 'X', 'X', 'X'], [None, None, None, 'X', None, 'X', None, 'X', None, None, None, 'X']] alist = [] for sublist in xlist: char_count = 0 new_sublist = [] for item in sublist: if item == 'X': # 从'A'开始生成对应字母 new_sublist.append(chr(ord('A') + char_count)) char_count += 1 else: new_sublist.append(item) alist.append(new_sublist) # 验证结果 print(alist)
代码说明
ord('A')获取字母'A'的ASCII码值(65),加上计数器char_count后,用chr()转换为对应英文字母- 每个子列表的计数器独立初始化,确保每个子列表的替换都从'A'开始
- 非'X'元素直接保留,完全维持原列表的结构和空值位置
内容的提问来源于stack exchange,提问作者user11734614
相关产品推荐
相关产品推荐

