2016-11-08 4 views
1

В моем коде я сейчас делаю что-то вроде этого:выполнить несколько раз ту же процедуру в питоне

for _ in xrange(n): 
    f(x) 

где f некоторая произвольная функция, которая не возвращает ничего (т.е. просто None) и x является произвольный вход для этой функции

Мне просто интересно, есть ли способ сделать это в одной строке? В python существует множество функций, таких как map, fold и т. Д., Которые используются для работы с элементами списка, но все они, похоже, считают, что нас интересует функция, возвращаемая функцией.

Выполнение:

[f(x) for _ in xrange(n)] 

на самом деле работает хорошо, но она возвращает весь список None, что мне не нужно.

+0

Так как цена '\ n' символов еще 0, это нормально, чтобы сделать это в 2-х линий. – wim

+1

Второе следует избегать, потому что вы используете понимание его побочного эффекта, который является огромным [no-no] (http://stackoverflow.com/questions/5753597/is-it-pythonic-to-use -list-постижения-для-всего-побочных эффектов) – idjaw

ответ

3

две линии в порядке и ожидании.

Вы, , могли бы сделать for _ in range(n): f(x), если у вас была веская причина, но у вас, вероятно, нет ни одного из них.

0

Для меня, писать что-то вроде

for i in array: f(x) 

работает в Python 2.7 и 3

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