我正在尝试编写一个程序,给定一个列表,该程序通过列表读取并旋转列表中的数字,每次交互一个位置,直到数字到达起始位置。
所需输出示例:
list : 1 2 3 4
[1,2,3,4]
[2,3,4,1]
[3,4,1,2]
[4,1,2,3]
[1,2,3,4]
我已经写了代码来做这个,但是它不是有效的,并且不打印我想要的。
def rotation(n):
rotations = set()
for i in range( len( str(n) ) ):
m = int( str(n)[i:] + str(n)[:i] )
rotations.add(m)
return rotations
print(rotation(1234))
此代码的输出是
{1234, 4123, 3412, 2341}
如果有人能帮我解决这个问题,我将不胜感激。
不清楚为什么当你想对列表[1, 2, 3, 4]
进行操作时,你要对数字1234
进行操作,或者当你想要输出包含重复元素时,为什么你的函数返回一个集合。
让函数取原始列表并打印每次旋转:
>>> def rotation(nums):
... for i in range(len(nums)+1):
... print(nums[i:] + nums[:i])
...
>>> rotation([1, 2, 3, 4])
[1, 2, 3, 4]
[2, 3, 4, 1]
[3, 4, 1, 2]
[4, 1, 2, 3]
[1, 2, 3, 4]
这样做,
def rotation(series):
for i in range(len(series) + 1):
print(series)
series = series[1:] + series[:1]
rotation([1,2,3,4])
[1, 2, 3, 4]
[2, 3, 4, 1]
[3, 4, 1, 2]
[4, 1, 2, 3]
[1, 2, 3, 4]