>>> а чем for i in xrange(0,100) не нравится?
>Потому что есть обычная итерация с условием(часто шаг нужно делать не +/-
>1,
>>> [i for i in xrange(0,20,2)] [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> [i for i in xrange(20,0,-3)]
[20, 17, 14, 11, 8, 5, 2]
>нередко встречаются множественные условия, а не только проверка переменной-счетчика)
практически всегда эта переменная-счётчик нужна для последовательного доступа к элементам массива. Вы покажите пример, где жизненно необходим C-style for.
Вон, в ruby тоже нет C-style for, там вообще 100.times { тело цикла }
>И в какой же ситуации так уж безумно нужен "способ получения последовательностей
>случайной длины" ? Безумно не нужно, ничего, в том числе от
>ЯП, если нужно значит что-то в жизни надо поменять к лучему
>:)
простой пример: вам нужно последовательность в виде m положительных полупериодов синуса.
про случайную последовательность случайной длины взято http://www.ibm.com/developerworks/ru/library/l-pycon/index.html
У меня был более жизненный пример. Представьте, что у вас есть некий большой набор измерений за сутки (M) и есть некая величина(v), рассчитываемая на основе этих данных.
Задача: рассчитать допустимый процент потерь исходных данных (M) при известном проценте отклонения для конечного результата(v) и получить данные для диаграммы погрешность v от процента потерь.
>Да и в каком контесте подразумевается случайная последовательность ? Вам нужен цикл
>со случаым числом итераций или множество элементов случайной длины ?
>Предположим, мы хотим получить поток случайных чисел меньших единицы, которые подчиняются обратному ограничению. А именно: мы хотим, чтобы каждое следующее число было по крайней мере на 0.4 больше или меньше предыдущего. Более того, сам поток не бесконечен, а заканчивается после случайного числа шагов. Например, мы прервем его, как только появится число меньшее 0.1. Описанные ограничения несколько схожи с теми, что можно найти в алгоритме "случайного блуждания", причем условие окончания напоминает "локальный минимум", но, определенно, эти требования мягче, чем при решении реальных задач.
И вообще... перл, такой чудный перл:
#!/usr/bin/perl
my $global="string!";
sub foo { print "foo called!\n"; $global="5"; }
$foo="haha";
print "foo=$foo\n";
print "global=$global\n";
print "wow!\n" if defined foo;
print "global=$global\n";
print "foo=$foo\n";
$ ./test.pl
foo=haha
global=string!
foo called!
wow!
global=5
foo=haha
Ахренеть... я хотел проверить существование переменной, зачем вызывать функцию?
Расскажите, как узнать, что функция уже определена, но без её вызова?
И как узнать, что нам вернула некая функция: строку, число, список, хеш или функцию?