如何替换列表内字符串的指定字符,按给定映射规则得到目标结果
解决方案
你原有代码存在两个核心问题:
- 直接调用
str(lst)将整个列表转为字符串遍历,会把列表的方括号、元素之间的引号、逗号都作为遍历对象,不符合处理逻辑 - 你修改的只是循环变量
j本身,没有把替换后的字符拼接存储,最后打印的j只能得到整个遍历过程最后一个字符的处理结果
你可以用字典定义替换映射,避免写大量if-elif判断,再通过列表推导式遍历处理每个元素,实现代码如下:
# 原列表 lst = ['GACGTAGCTAGCGTA' , 'TTCCCTAGCGTA' ] # 定义替换映射规则 trans_map = {'A': 'T', 'G': 'C', 'T': 'A', 'C': 'G'} # 遍历每个字符串,逐字符替换后拼接 result = [''.join([trans_map[c] for c in s]) for s in lst] print(result)
运行后输出就是你需要的结果:['CTGCATCGATCGCAT', 'AAGGGATCGCAT']
如果你希望沿用你原来的逐次判断的逻辑修改,可参考如下实现:
lst = ['GACGTAGCTAGCGTA' , 'TTCCCTAGCGTA' ] result = [] # 先遍历列表里的每个字符串 for s in lst: new_s = '' # 遍历单个字符串里的每个字符 for j in s: if j == 'A': new_s += 'T' elif j == 'G' : new_s += 'C' elif j == 'T' : new_s += 'A' elif j == 'C' : new_s += 'G' else: # 其他字符原样保留 new_s += j result.append(new_s) print(result)
内容的提问来源于stack exchange,提问作者user16871229
相关产品推荐
相关产品推荐

