我有一个这样格式的列表:
com = ['eto', 'eti', 'etn', 'ets', 'eot', 'eoi', 'eon', 'eos', 'eit', 'eio', 'ein']
然后在程序中我需要对每个单元格中的每个字符执行3次不同的计算。
newC = [w.replace(mCommon[0], com[e]) for w in newC]
newC = [w.replace(mCommon[0], com[t]) for w in newC]
newC = [w.replace(mCommon[0], com[o]) for w in newC]
下一次
newC = [w.replace(mCommon[0], com[e]) for w in newC]
newC = [w.replace(mCommon[0], com[t]) for w in newC]
newC = [w.replace(mCommon[0], com[i]) for w in newC]
等等,在一个循环中,所以我不对这些字符进行硬编码,它们应该从列表中获取。
基本上我希望这三个列表推导循环遍历每个组合,例如第一次分别使用'e','t'和'o',然后分别使用'e','t'和'i'等等上。
由于显而易见的原因,我现在得到的是指数超出范围。 m
部分也不正确,因为它不会改变。
答案 0 :(得分:1)
您不必编写三个列表理解。循环遍历list
,然后遍历每个字符以将它们中的每一个用作replace
参数。
for element in list: #element in be 'eto', then 'eti' ...
for character in element: # character will be 'e','t','i' then 'e','t','o'...
newC = [w.replace(mCommon[0], character) for w in newC]
请注意,上面的代码假定newC
已存在于代码中的某处。
答案 1 :(得分:1)
如果你想要一个功能:
newC = [w.replace(mCommon[0], 'e') for w in newC]
newC = [w.replace(mCommon[0], 't') for w in newC]
newC = [w.replace(mCommon[0], 'o') for w in newC]
在第一个电话中并且:
newC = [w.replace(mCommon[0], 'e') for w in newC]
newC = [w.replace(mCommon[0], 't') for w in newC]
newC = [w.replace(mCommon[0], 'i') for w in newC]
在第二个电话中你可以写:
com = ['eto', 'eti', 'etn', 'ets', 'eot', 'eoi', 'eon', 'eos', 'eit', 'eio', 'ein']
g_com_index = 0
def adapt_c(newC):
global g_com_index
for c in com[g_com_index % len(com)]
newC = [w.replace(mCommon[0], c) for w in newC]
g_com_index += 1
return newC