LINUX.ORG.RU

История изменений

Исправление 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 + ")")
}

так то!