История изменений
Исправление
stevejobs,
(текущая версия)
:
перла не видел (по общественному мнению 99% это полное ненужное лигаси-говно, использующееся в конторах типа мэйлру или букинг-ком для поддержки лигаси-говнокода, так что даже даже не пытался смотреть),
а в питоне - оно и так в каком-то смысле как в питоне. Но питон емнип ни в каком виде не умеет использовать for по нескольким переменным, и нужно юзать такие подпорки:
import itertools
t1 = [a list of integers, strings and lists]
t2 = [another list of integers, strings and lists]
for i, j in itertools.product(range(x), range(y)):
бла-бла-бла
имхо это неплохо, что itertools это внешняя подпорка, а не хардкод в конпеляторе. Плохо что сам питон имеет нерасширяемый синтаксис, и нельзя вот этот «itertools.product(» вызванный в мерзком синтаксисе, выбросить, чтобы конпелятор сам его подставил (вывел из контекста). И даже в какой-нибудь няшный оператор не превратишь. Так что низачот.
либо надо писать вложенные циклы на манер Крестов (это уже другой пример - генерация пар из 10 рандомных чисел):
int a = 0;
for (int i1 = 0; i1 < 10; i1++) {
a = // generate random number
int b = 0;
for (int i2 = 0; i2 < 10; i2++) {
b = // generate random number
System.out.println("(" + a + ", " + b + ")");
}
}
понятно что вложенные циклы это фу
meanwhile in russia scala, на онове тех же бесконечных стримов:
def randomGen: Stream[Int] = (Math.random * 200).toInt - 100 :: randomGen
val random = randomGen
for (a <- random.take(10); b <- random.take(10)) {
println("(" + a + ", " + b + ")")
}
так то!
Исходная версия
stevejobs,
:
перла не видел (по общественному мнению 99% это полное ненужное лигаси-говно, использующееся в конторах типа мэйлру или букинг-ком для поддержки лигаси-говнокода, так что даже даже не пытался смотреть),
а в питоне - оно и так в каком-то смысле как в питоне. Но питон емнип ни в каком виде не умеет использовать for по нескольким переменным, и нужно юзать такие подпорки:
import itertools
t1 = [a list of integers, strings and lists]
t2 = [another list of integers, strings and lists]
for i, j in itertools.product(range(x), range(y)):
бла-бла-бла
либо писать вложенные циклы на манер Крестов (это уже другой пример - генерация пар из 10 рандомных чисел):
int a = 0;
for (int i1 = 0; i1 < 10; i1++) {
a = // generate random number
int b = 0;
for (int i2 = 0; i2 < 10; i2++) {
b = // generate random number
System.out.println("(" + a + ", " + b + ")");
}
}
понятно что вложенные циклы это фу
meanwhile in russia scala, на онове тех же бесконечных стримов:
def randomGen: Stream[Int] = (Math.random * 200).toInt - 100 :: randomGen
val random = randomGen
for (a <- random.take(10); b <- random.take(10)) {
println("(" + a + ", " + b + ")")
}
так то!