2013-12-15 2 views
0

Несколько вопросов, связанных с одной и той же проблемой, были опубликованы, но не нашли решения для моей проблемы. Я хотел бы получить вывод моего цикла (список 2000 float) в список python. Я получаю «переменную неистребимую ошибку», потому что мне не удается вызывать каждый из элементов вывода правильно, чтобы быть записанным в список.Запись переменной итерации из цикла в список python

Другие попытки, такие как преобразование в список внутри цикла, дают мне список для каждого элемента, когда мне нужен только один список со всеми элементами внутри.

Это мой код:

for i in range(x): 
    timedelta= (function(i)) #datetime.timedelta elements 
    pos_time = (i, function(i)) #tuple of an integer and a float 
    time = pos_time[1] 
    print time 

Если я закончу здесь я получаю список значений мне нужно:

3.5 
2.04 
6.6 
4.02 
... 

Если я по-прежнему внутри цикла:

times = [] 
for time in range(x): 
    times.append(time) 

то я получаю список из последовательных значений, а не выход из цикла. Что мне нужно, это список, как:

times = [3.5,2.04,6.6,4.02] 

Я был бы признателен за вашу помощь очень много.

ответ

1
times = [function(i) for i in range(x)] 
+0

Спасибо за быстрый ответ, но я боюсь, что не дает мне то, что я хочу. Я получаю массивы из 2000 равных элементов, что это первое значение цикла. – Nacu

2

На вашей второй попытки («Если я по-прежнему внутри цикла»), вы были очень близки, просто добавьте вызов функции:

times = [] 
for time in range(x): 
    times.append(function(time)) 

Кроме того, вы можете захотеть взглянуть на map() функция для создания списка функций приводит непосредственно:

map(function, range(x)) 
1

Вместо печати добавить в список раза:

times = [] 
for i in range(x): 
    time= (function(i)) 
    pos_time = (i, function(i)) 
    time = pos_time[1] 
    # print time 
    times.append(time) 

Я не уверен, что я понять, что вы пытаетесь сделать внутри для петли, хотя:

time= (function(i)) 

такая же, как

time = function(i) 

т.е. вызова function с переменная цикла в качестве параметра.

pos_time = (i, function(i)) 

создает кортеж i переменной цикла, и второй вызов function(i).

time = pos_time[1] 

затем получает второе/последнее значение созданного вами кортежа.

Если function(i) возвращает то же значение каждый раз, когда вы называете его i, вы могли бы просто сделать

times = [] 
for i in range(x): 
    time = function(i) 
    times.append(time) 
Смежные вопросы