Найти - Пользователи
Полная версия: кошерный цикл с счетчиком
Начало » Python для новичков » кошерный цикл с счетчиком
1 2
sanchopanca
столкнулся с такой проблемой
нужно написать цикл, который выглядел бы на C так:
for(double a = 0.0; a < b; a += h)
как это сделать на пайтоне?
Чтоб было красиво:)
igor.kaist
for a in xrange(0,b) step h:
?
guranvir
Все понятно только что значит в данном случае step h?
Virtuos86
Игорь, там тип “double”, аналог “float”, поэтому ни range, ни xrange не подходят.
Вот так наглядно:
>>> def circle(a, b, h):
while (a < b):
a += h
yield a
>>> for i in circle(0.0, 7.3, 0.9):
print i
0.9
1.8
2.7
3.6
4.5
5.4
6.3
7.2
8.1
>>>
Красиво ли, не знаю. Можно и генераторное выражение, написать.
########
Ну правильно-то, конечно:
for a in xrange(0, b, h)
igor.kaist
Черт, сам не знаю, откуда у меня step вырвалось О_о
На практике никогда в питоне step не нужен был. Похоже из детских воспоминаний о бейсике :)
sanchopanca
а можно ли использовать Сишный цикл for, как, например, можно использовать scanf?
Уж очень мне его не хватает в пайтоне
PooH
igor.kaist
На практике никогда в питоне step не нужен был. Похоже из детских воспоминаний о бейсике :)
А как же классика веба, разбиение по колонкам?
def columns(ls, n):

def f():
for i in range(n):
yield ls[i::n]

for x in map(None, *f()):
yield x

for x in columns(range(100),4):
print x
o7412369815963
igor.kaist
for a in xrange(0,b) step h:
?
>>> print range(0,10,3)
[0, 3, 6, 9]
Eliont
PooH
А как же классика веба, разбиение по колонкам?
Эм… и как эта штука работает?
PooH
Eliont
Эм… и как эта штука работает?
Ну как бы внутренняя функция f возвращает итератор по срезам от 1 до n, каждый сдвинут на один элемент и идет с шагом n. Внутренняя функция это замыкание, ls и n она получает из внешней функции.
[0, 3, 6, 9]
[1, 4, 7]
[2, 5, 8]
ну а map собирает поэлементно в кортежи
(0, 1, 2)
(3, 4, 5)
(6, 7, 8)
(9, None, None)
Используется map, а не zip, чтобы на месте отсутствующих элементов вывести пустые ячейки.
PS: в принципе внешняя функция тупо транспонирует вывод внутренней
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB