Переменные в списке

Я хотел бы поместить набор переменных в список и сделать замену для каждой из них.
Пример:

let mylist = ['var1','var2','var3']

for i in range(0,2)
 let mylist[i] = substitute(mylist[i], '\.', ',', 'g')
endfor

это должно сделать это:

let var1 = substitute(var1, '\.', ',', 'g')  
let var2 = substitute(var2, '\.', ',', 'g')  
let var3 = substitute(var3, '\.', ',', 'g')  

но это не работает.

Что я сделал не так?

Изменить
Одни и те же переменные ['var1','var2','var3'] нужны для большего количества подстановок, поэтому я решил добавить все подстановки в список:

let mylist = ['var1','var2','var3']
let mySubst = [['\.', ','], ['\s*$', ''], ['[,.]0$', ''], ['^[.,]', '0&']]

for i in range(0,len(mylist)-1)
    for m in range(0,len(mySubst)-1)
      let mylist[i] = substitute(mylist[i] , mySubst [m][0],  mySubst [m][1], 'g')
    endfor
endfor

Это не работает.


person remio    schedule 06.05.2012    source источник


Ответы (2)


Попробуйте это:

let [var1, var2, var3] = map([var1, var2, var3], 'substitute(v:val, "\\.", ",", "g")')

после повторного прочтения вопроса, возможно, это то, что вы ищете:

let list = ['var1', 'var2', 'var3']
let [var1, var2, var3] = map(list, 'substitute({v:val}, "\\.", ",", "g")')
person Raimondi    schedule 06.05.2012
comment
Привет, Эль Исра, первая строка сработала. Второе решение не сработало. Какой будет замещающая команда, поскольку в команде есть еще 2 переменные? п.э. let [var1, var2, var3] = map([var1, var2, var3], 'substitute(v:val, searchvariable, replacevariable, "g")') не работает - person remio; 06.05.2012
comment
Эта замена выглядит нормально, поэтому трудно понять, почему она терпит неудачу без более подробной информации. Можете ли вы поделиться немного больше вашего кода? - person Raimondi; 07.05.2012
comment
Эль Исра, я добавил больше информации в свой вопрос. Пожалуйста, смотрите после редактирования. - person remio; 07.05.2012
comment
нашел это. Удалил {} вокруг v:val и теперь все работает нормально! благодарю вас - person remio; 07.05.2012

Вы не должны заключать переменные в кавычки в этой строке: let mylist = ['var1','var2','var3']. Это превращает их в строковые литералы var1, var2 и var3 вместо значений этих переменных.

person Paul    schedule 06.05.2012
comment
Это было бы отличным решением, но удаление кавычек не сработало :( - person remio; 07.05.2012