2015-12-06 6 views
1

Я пытаюсь сделать вектор из двух разных, как показано в фрагменте кода ниже. Тем не менее, я получаю исключение из диапазона вне диапазона 5-й строки при первом запуске кода в цикле for.Заполнение списка внутри цикла for в python

Что я делаю неправильно?

def get_two_dimensional_vector(speeds, directions): 
    vector = [] 
    for i in range(10): 
     if (i % 2 == 0): 
      vector[i/2][0] = speeds[i/2] 
     else : 
      vector[i/2 - 1/2][1] = directions[i/2 - 1/2] 
+0

С помощью [ 'enumerate'] (https://docs.python.org/3/library/functions.html#enumerate) в петле –

+0

[я/2 - 1/2] в последней строке следует заменить на [(i - 1)/2] для стартеров. – Squid

+0

Если это целочисленное деление, вам даже не нужно это делать. В любом случае. –

ответ

0

Вы не можете использовать список Python таким образом. Это не похоже на массив C с предопределенной длиной . Если вы хотите добавить новый элемент, вы должны использовать метод append или что-то в этом роде.

Помимо этого, вы также используете второй индекс, подразумевая, что элементы vector сами списки или dicts или что-то, прежде, чем они даже были назначены.

Похоже, что вы хотите конвертировать speeds и directions в двухмерный список. Итак, во-первых, вот как это сделать с циклом. Отметьте , что я удалил предположение фиксированного размера, которое вы использовали, хотя код по-прежнему предполагает, что speeds и directions - такого же размера.

def get_two_dimensional_vector(speeds, directions): 
    vector = [] 
    for i in range(len(speeds)): 
     vector.append([speeds[i], directions[i]]) 
    return vector 

speeds = [1, 2, 3] 
directions = [4, 5, 6] 

v = get_two_dimensional_vector(speeds, directions) 
print(v) 

Теперь, это Pythonic способ сделать это.

print(zip(speeds, directions)) 
Смежные вопросы