2015-04-24 2 views
1

Как мне сделать что-то подобное?Использование для цикла для повторения двух переменных вместе

Скажем, у меня есть массив x = np.array([1,2,3,4,5]) из length 5,

for i,j in range(len(x)): 

Я хочу i и j прирастить вместе.

Это бросает мне сообщение об ошибке:

TypeError         Traceback (most recent call last) 
<ipython-input-4-37d0ddc3decf> in <module>() 
----> 1 for i,j in range(len(x)): 
     2  print i,j 
     3 

TypeError: only length-1 arrays can be converted to Python scalars 

Причина мне нужно это, потому что я должен использовать его в состоянии внутри для цикла. Например, y[i][j], и я хочу, чтобы это было 0,0, затем 1,1 и так далее.

+1

Вы, вероятно, хотите использовать 'enumerate', но я не понимаю ваш желаемый результат. –

+0

@JulienSpronck Я хотел бы, чтобы оба' i' и 'j' увеличивали вместе – user3397243

+0

, но вы хотите, чтобы оба они были равны 1 , 2, 3, 4, 5? –

ответ

2

Отредактированный ответ

OP говорит

Причина мне нужно это, потому что я должен использовать его в состоянии внутри для цикла. Например, y [i] [j], и я хочу, чтобы это было 0,0, а затем 1,1 и так далее.

В этом случае, вы могли бы просто использовать:

y[i][i] 

Оригинальный ответ

Я не совсем уверен, почему вы хотели бы сделать это, вы мог просто установить его в первой строке цикла цикла:

for i in range(len(x)): 
    j = i 
    ... #rest of the code follows 

Вы можете также использовать enumerate, как указано в комментариях по @Julien, как показано ниже (но ИМО, ранее метод лучше):

>>> for i, j in enumerate(xrange(len(x))): 
...  print i, j 
... 
0 0 
1 1 
2 2 
+0

«В этом случае вы можете просто использовать ...' ...это верно во всех случаях, если 'j' всегда равно' i', просто используйте 'i' –

+0

@JulienSpronck До того, как OP выяснило, что, возможно, ему понадобилось бы изменить' j' в течение его цикла for ; но как только он уточнил, эта возможность стала удаленной, и, следовательно, формулировка текущего ответа. –

+0

Я думаю, вы должны удалить решение 'enumerate'. Это просто глупо делать такое. –

1

Вы можете попробовать это:

for i, j in zip(range(len(x)), range(len(x))): 
    print i, j 

Итак, вопрос в том, как итерации двух переменных, а не почему ;-)

4

Зачем вам j? Если j всегда равно i, просто используйте i. Нет необходимости в второй переменной.

+0

Я полностью согласен. Я понимаю свою ошибку сейчас! – user3397243

+0

@ пользователь3397243 без проблем :-) –

Смежные вопросы