Pythonic方式生成字符串旋转

kha*_*iuk 5 python python-2.7

考虑一个字符串'1234'.你需要一个能产生所有旋转的功能:'1234', '3412', '4123', '2341'.我创建了一个简单的测试套件:

assert rotations('123') == set(['123', '231', '312'])
assert rotations('111') == set(['111'])
assert rotations('197') == set(['197', '971', '719'])
Run Code Online (Sandbox Code Playgroud)

什么是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
Run Code Online (Sandbox Code Playgroud)

Sai*_*zad 4

s='1234'
z = {s[x:]+s[:x] for x in range(len(s))}
Run Code Online (Sandbox Code Playgroud)