for循环最大值的python range()

时间:2015-10-08 13:36:55

标签: python loops range

如何在范围函数中指定最大值,使其在某个数字后恢复到开头?

即:

for i in range(253, 2):
    print i

Would print 253, 254, 255, 0 , 1, 2  

如果最大值为255

修改(阅读评论和答案后)

这应该可行吗?

if start < end:
    list = [ i for i in range(start, end + 1 ) ]
else:
    list = [ i % 256 for i in range(start, end + 256 + 1 ) ]

回顾这一点,人们似乎喜欢复杂而不是简单。为什么在使用简单循环完成时可以使用itertools和其他复杂的构造?

4 个答案:

答案 0 :(得分:4)

您想使用模运算(或时钟运算)。 https://en.wikipedia.org/wiki/Modular_arithmetic

如果要打印253, 254, 255, 0, 1, ..., 252,可以使用以下代码。

for i in range(0, 256):
    print((253+i)%256)

答案 1 :(得分:4)

如果我理解得很好,那不是range问题。

给出2个数字minmax

  • 如果min < max,您需要minmax之间的数字列表
  • 否则您希望列表从min2550max

它只是伪代码,但它可能足以让您开始解决您的问题(使用一个或两个range调用)

答案 2 :(得分:1)

指定范围的方式存在一些问题。但你可以这样做:

max_val = 255
for i in range(253, max_val+2):
    print i%max_val

但由于range指定了未包含的结束值,因此如果您希望打印range(253, (max_val+1)+2),则需要执行2

如果你事先不知道范围结束值是否会超出范围 - 开始你可以做

start = 253
end = 2 # +1 if you want the 2 to be printed
for i in range(start, end+(start>end and max_val or 0)):
    print i%max_val

答案 3 :(得分:0)

将其拆分为两个范围:range1 = range(start, highest+1)range2 = range(end)。然后使用itertools,您可以:

for i in it.chain(range1, range2):