考慮一個字符串'1234'
。你需要一個產生所有旋轉的函數:'1234', '3412', '4123', '2341'
。我創建了一個簡單的測試套件:生成字符串旋轉的Python方法
assert rotations('123') == set(['123', '231', '312'])
assert rotations('111') == set(['111'])
assert rotations('197') == set(['197', '971', '719'])
什麼是pythonic方式做到這一點?我的代碼完成下面
def rotations(num):
str_num = str(num)
result = set()
for mid in xrange(len(str_num)):
result.add(
str_num[mid:] + str_num[:mid]
)
return result
如果這是您認爲可以改進的**工作代碼**,請參閱[codereview.se]。 – jonrsharpe
也許是一種理解? '{s [mid:] + s [:mid]爲範圍中的中間(len(s))}' –
你有什麼是Pythonic足夠 - 儘管@ NiklasB。的評論,這也許應該是一個被接受的答案,可能更多(儘管在Python 2中用'xrange'替換'range') –