如何在范围函数中指定最大值,使其在某个数字后恢复到开头?
即:
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和其他复杂的构造?
答案 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个数字min
和max
:
min < max
,您需要min
和max
之间的数字列表min
到255
和0
到max
它只是伪代码,但它可能足以让您开始解决您的问题(使用一个或两个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):