Python:使用 range() 和 " ".join()

evi*_*as 2 python string integer join range

x = WAIT100MS
subroutines = ["WAIT"+str(range(1,256))+"MS"]
if x in subroutines:
    print "success"
else:
    print "invalid"
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一段代码,其中 ifWAITXMS位于1和 之间255,它将被接受,否则不会。range() 函数只是生成一个列表,所以我想我可以使用

" ".join("WAIT"+str(range(1,256))+"MS"),

以类似 的字符串结束x。然而,使用该join()函数range()似乎并不像我期望的那样工作,而是给了我一个正常的列表,如"WAIT[1,2,3,4,...]MS". 我应该怎么办?

mgi*_*son 6

我想你想要这样的东西:

''.join("WAIT%dMS"%i for i in range(1,256))
Run Code Online (Sandbox Code Playgroud)

这是我认为更好的方法:

def accept_string(s):
    try:
        i = int(s[4:-2])
    except ValueError:
        return False
    return s.startswith('WAIT') and s.endswith('MS') and (1 <= i < 256)
Run Code Online (Sandbox Code Playgroud)