1

我正在做一个分位数问题,我需要做这样的事情

间隔:

150-155
155-160
160-165
165-170
170-175
175-180
180-185

>> inferior_limit = 150
>> superior_limit = 185
>> range = inferior_limit - superior_limit
>> number_of_intervals = 5

这些是变量,我需要它,因为我正在做一个表格的间隔

>> width = range/number_of_intervals
>> while inferior_limit <= superior_limit
# there is my problem
>> inferior_limit += width
>> print inferior_limit
4

2 回答 2

2

这是你的意思吗?

>>> inf, sup, delta = 150, 185, 5
>>> print '\n'.join('{}-{}'.format(x, x + delta) for x in xrange(inf, sup, delta))
150-155
155-160
160-165
165-170
170-175
175-180
180-185
于 2012-07-26T04:46:34.287 回答
1
>>> start, stop, step = 150, 185, 5
>>> r = range(start, stop + 1, step) # You can use xrange on py 2 for greater efficiency
>>> for x, y in zip(r, r[1:]):
        print '{0}-{1}'.format(x, y)


150-155
155-160
160-165
165-170
170-175
175-180
180-185

一种更有效的方法是使用itertools成对配方。

from itertools import tee, izip
def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return izip(a, b)

for x, y in pairwise(r):
    print '{0}-{1}'.format(x, y)

也只是为了好玩,这里有一个使用 的解决方案itertools.starmap,因为没有人使用它!

from itertools import starmap
print '\n'.join(starmap('{0}-{1}'.format, pairwise(r)))
于 2012-07-26T05:35:22.203 回答