python for 循环最大值中的 range()
python range() in for loop maximum
如何在范围函数中指定最大值,使其在一定数量后恢复到开头?
即:
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 和其他复杂的构造,当它可以通过一个简单的循环完成时?
您想使用模运算(或时钟运算)。 https://en.wikipedia.org/wiki/Modular_arithmetic
如果要打印253, 254, 255, 0, 1, ..., 252
,可以使用下面的代码。
for i in range(0, 256):
print((253+i)%256)
您指定范围的方式存在一些问题。但是你可以这样做:
max_val = 255
for i in range(253, max_val+2):
print i%max_val
但是由于 range
指定的最终值未包括在内,如果您希望打印 2
,则需要执行 range(253, (max_val+1)+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
如果我理解得很好,那不完全是 range
问题。
给定 2 个数字 min
和 max
:
- 如果
min < max
,您需要 min
和 max
之间的数字列表
- 否则您想要从
min
到 255
和 0
到 max
的列表
这只是伪代码,但可能足以让您开始解决问题(使用一两次 range
调用)
将其分为两个范围:range1 = range(start, highest+1)
和 range2 = range(end)
。然后使用 itertools,你可以:
for i in it.chain(range1, range2):
如何在范围函数中指定最大值,使其在一定数量后恢复到开头?
即:
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 和其他复杂的构造,当它可以通过一个简单的循环完成时?
您想使用模运算(或时钟运算)。 https://en.wikipedia.org/wiki/Modular_arithmetic
如果要打印253, 254, 255, 0, 1, ..., 252
,可以使用下面的代码。
for i in range(0, 256):
print((253+i)%256)
您指定范围的方式存在一些问题。但是你可以这样做:
max_val = 255
for i in range(253, max_val+2):
print i%max_val
但是由于 range
指定的最终值未包括在内,如果您希望打印 2
,则需要执行 range(253, (max_val+1)+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
如果我理解得很好,那不完全是 range
问题。
给定 2 个数字 min
和 max
:
- 如果
min < max
,您需要min
和max
之间的数字列表
- 否则您想要从
min
到255
和0
到max
的列表
这只是伪代码,但可能足以让您开始解决问题(使用一两次 range
调用)
将其分为两个范围:range1 = range(start, highest+1)
和 range2 = range(end)
。然后使用 itertools,你可以:
for i in it.chain(range1, range2):