2013-06-28 7 views
0

У меня есть два списка:Установка значения для вложенных списков

nums = ['-3.00', '-3.50', '-4.00'] 
values = [['1.9', ' 2.05'], ['1.97', ' 2.02'], ['2.03', ' 1.95']] 

Для каждого вложенного списка в values Я хочу, чтобы вставить номер из nums.

Желаемый эффект:

[['-3.00', '1.9', ' 2.05'], ['-3.50', '1.97', ' 2.02'], ['-4.00', '2.03', ' 1.95']] 

я придумал:

[[row.insert(0, n) for n in nums] for row in values] 

Интересно, почему это не будет работать.

ответ

3

Причина, по которой это не работает, заключается в том, что метод insert возвращает None.

Вы хотите:

[[n] + v for n, v in zip(nums, values) ] 
+0

Точно, спасибо! Можете ли вы представить себе причину, по которой мой код испорчен? – nutship

+0

Добавлена ​​причина. Попробуйте 'print nums.insert (0,3)'. Надеюсь, поможет! – jh314

+2

@nutship, ваш код изменяет 'values' как побочный эффект, но вы вставляете _all_ чисел в каждое значение, потому что вы вложили петли вместо использования zip. Неправильная практика использования списков для их побочных эффектов. –