将字符串循环到网格中的可能逻辑是什么?
例如,如果我想打印“水”
water
aterw
terwa
erwat
rwate
我正在尝试类似的东西,
word = 'water'
for number, letter in enumerate(word):
if number < len(word):
print a + word[1:] + word[:1]
正如您从我的尝试中看到的那样,我不理解如何实现这一目标。谢谢你的帮助。
In [2]: word = 'water'
...: for i in range(len(word)):
...: print(word[i:] + word[:i])
water
aterw
terwa
erwat
rwate
循环遍历所有可能的索引,获取从该i
索引开始的后缀并将其添加到字符串的前面,从而获得所有可能的旋转。
你可以做
word = 'water'
for i in xrange(len(word)):
print word[i:] + word[:i]
使用collections.deque,它有一个rotate
方法可以完成你的工作。
向右旋转双端队列
n
步骤。如果n
为负数,则向左旋转。向右旋转一步相当于:d.appendleft(d.pop())
演示:
from collections import deque
d = deque('water')
for _ in xrange(len(d)):
print ''.join(d)
d.rotate(-1)
输出:
water
aterw
terwa
erwat
rwate