我正在嘗試撰寫一個程式,給定一個串列,該程式讀取一個串列并將串列中的數字旋轉一個位置以進行每次互動,直到數字到達起始位置。
所需輸出示例:
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}
如果有人可以幫助我解決這個問題,將不勝感激。
uj5u.com熱心網友回復:
目前尚不清楚為什么1234要對 list 進行操作時要對number 進行操作[1, 2, 3, 4],或者當您希望輸出包含重復元素時,為什么函式會回傳一個集合。這一切只會讓問題變得更加復雜。
只需讓函式獲取原始串列并列印每個旋轉:
>>> 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]
uj5u.com熱心網友回復:
做這個,
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]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/471316.html
標籤:Python python-3.x
