2015-05-14 1 views
-4

У меня есть список в таком формате:Используйте элементы списка в качестве значений в списке понимании

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 также неверна, потому что она не изменяется.

+7

[ "Что такое проблема XY? »] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –

+1

что такое' mCommon'? –

+0

Я объяснил это, я хочу, чтобы эти списки понимали использование символов в каждом элементе списка, например, e, t и o, затем следующий триплет и т. Д. – estranged

ответ

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 
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 уже существует где-то в вашем коде.

Смежные вопросы