В настоящее время я изучаю Python (у меня сильный фон в Matlab). Я хотел бы написать цикл в Python, где размер массива увеличивается с каждой итерацией (т. Е. Я могу присвоить новое вычисляемое значение другому индексу переменной). Для этого вопроса я использую очень простой цикл для генерации вектора t = [1 2 3 4 5]
. В Matlab, программирование мой желаемый контур будет выглядеть примерно так:Присвоить значения массиву во время цикла - Python
t = [];
for i = 1:5
t(i,1) = i;
end
мне удалось достичь того же в Python с помощью следующего кода:
result_t = []
for i in range(1,5):
t = i
result_t.append(t)
Есть ли более эффективный способ для назначения значения в массив, как мы итерации в Python? Почему невозможно сделать t[i,1] = i
(ошибки: индексы индексов должны быть целыми или фрагментами, а не кортежем) или t.append(t) = t
(ошибка: 'int
' объект не имеет атрибута 'append')?
Наконец, я использовал приведенный выше пример для простоты. Я знаю, что если бы я хотел создать vector [1 2 3 4 5]
в Python, то я мог бы использовать функцию «np.arange(1,5,1)
»
Заранее за вашу помощь!
-> Мое настоящее намерение состоит не в создании вектора [1 2 3 4 5], а в присвоении вычисленных значений индексу векторной переменной. Например:
result_b = []
b = 2
for i in range(1,5):
t = i + b*t
result_b.append(t)
Почему я не могу напрямую писать t.append(t)
или использовать индексирование (т.е. t[i] = i + b*t
)?
Вы можете использовать диапазон, поскольку он уже возвращает список в python 2. Xrange и в python3 он возвращает итерабельность, которая по-прежнему должна соответствовать вашим потребностям –