2015-07-08 4 views
0

Как вы делаете простой индекс/массив в Python? Например, в традиционном BASIC язык, все, что вы должны сделать что-то вродеБазовая переменная Индексирование

10 Dim V(5) 
20 For N = 1 to 5:V(N)=2^N+1/N:? N,V(N):Next 

который бы выход:

1 3.0 
2 4.5 
3 8.33333333333 
4 16.25 
5 32.2 

Если бы я хотел весов гауссовой квадратуре, я мог бы сделать:

UL=5 
[x,w] = p_roots(UL) 
for N in range(UL): 
    print N,w[N] 

, который работает:

1 0.236926885056 
2 0.478628670499 
3 0.568888888889 
4 0.478628670499 
5 0.236926885056 

но если я пытаюсь мой BASIC, как это, казалось бы

UL=5 
for N in range(1,UL+1): 
   V[N]=2**N+1.0/N 
   print N,V[N] 

, который отвергает его как

   V[N]=2**N+1.0/N 
NameError: name 'V' is not defined 

и если я пытаюсь имитировать гауссовского пример

UL=5 
[V]=2**UL+1.0/UL 
for N in range(1,UL+1): 
   print N,V[N] 

Я получаю

   [V]=2**UL+1.0/UL 
TypeError: 'float' object is not iterable 

В терминах массивов/индексирования не V [N] совпадает с w [N] (что работает в его примере)? Вся документация на Python, кажется, перескакивает в более сложные случаи, не предоставляя более элементарных примеров, подобных приведенным выше.

+1

Вы должны проверить [официальный учебник Python] (https://docs.python.org/3.4/tutorial) для того, как сделать массивы ('list's) в Python. – TigerhawkT3

+0

Если вы хотите сделать список в Python, поместите скобки вокруг его содержимого, а не имя переменной ... –

+0

Возможный дубликат [Как объявить массив в Python?] (Http://stackoverflow.com/ вопросы/1514553/как к-заявляют ан-массив-в-питон) –

ответ

1

Ваши ошибки кажутся ясными: в первый раз вы не определили V вообще (сравните с вашей версией BASIC, где вы использовали Dim V), а на втором вы назначили V на одно значение (2 ** UL + 1.0/UL), а не список значений.

Однако вы должны отметить, что списки Python не являются массивами, и вы их не делаете. Вместо этого вы составляете их по мере добавления. Например, в первой версии:

UL = 5 
V = [] 
for N in range(1,UL+1): 
    V.append(2**N+1.0/N) 
Смежные вопросы