столкнулся с такой проблемой
нужно написать цикл, который выглядел бы на C так:
for(double a = 0.0; a < b; a += h)
как это сделать на пайтоне?
Чтоб было красиво:)
for a in xrange(0,b) step h:
>>> 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
>>>
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
igor.kaist?for a in xrange(0,b) step h:
>>> print range(0,10,3)
[0, 3, 6, 9]
PooHЭм… и как эта штука работает?
А как же классика веба, разбиение по колонкам?
EliontНу как бы внутренняя функция f возвращает итератор по срезам от 1 до n, каждый сдвинут на один элемент и идет с шагом n. Внутренняя функция это замыкание, ls и n она получает из внешней функции.
Эм… и как эта штука работает?
[0, 3, 6, 9]
[1, 4, 7]
[2, 5, 8]
(0, 1, 2)
(3, 4, 5)
(6, 7, 8)
(9, None, None)