Python Integer for循环200到205

时间:2013-03-07 22:04:05

标签: python arrays list python-2.7 set

我需要在我的应用程序配置中输入一个http响应代码列表,并希望提供一个python速记,这样他们就不会列出每个代码。

类似以下内容:

class settings: 
  success_codes= 200..299        # successful request
  retry_codes= 400..404,500-503  # retry later
  fail_codes = 504,505,506       # don't retry again 

是不是python支持某种类似这样的干净语法来定义范围?我需要多个范围。

4 个答案:

答案 0 :(得分:5)

在Python 2.x中使用ranges

success_codes = range(200, 300)
retry_code    = range(400, 405) + range(500, 504)
fail_codes    = range(504, 507)

供参考,在Python 3.x中(也适用于Python 2.x):

success_codes = list(range(200, 300))
retry_code    = list(range(400, 405)) + list(range(500, 504))
fail_codes    = list(range(504, 507))

答案 1 :(得分:1)

只需使用范围功能:

vals = range(start, stop + 1)

答案 2 :(得分:1)

这适用于所有版本的python

class settings: 
  success_codes = list(range(200, 299 + 1)) # successful request
  retry_codes = list(range(400, 404 + 1)) + list(range(500, 503 + 1)) # retry later
  fail_codes = list(range(504, 506 + 1)) # don't retry again

在早期版本的python中,list(range())可以替换为range()。另外,显然,您可以直接将1添加到上限值。

答案 3 :(得分:1)

使用范围(n,m + 1),就像很多人建议的那样,有效。但是,您是否需要在内存中创建所有可能的值?

在大多数情况下,您可以使用:

if return_code < 200 or return_code >= 299:
    do_something()

或者:

if return_code in range(200, 299+1):
    do_something()