我有一個像拆分列表爲增加序列使用itertools
[1,2,3,4,5,2,3,4,1,2]
混合序列的名單我想知道我該如何使用itertools到列表分成增加序列切割清單在下降點。例如上述將
[[1, 2, 3, 4, 5], [2, 3, 4], [1, 2]]
這已經通過注意到序列降低在2所以我們切割第一比特那裏,另一減少爲一個切割再次那裏獲得的輸出。
另一個例子是序列
[3,2,1]
輸出應該是
[[3], [2], [1]]
倘若給定的順序增加我們返回相同的序列。例如,
[1,2,3]
返回相同的結果。即
[[1, 2, 3]]
對於重複的名單像
[ 1, 2,2,2, 1, 2, 3, 3, 1,1,1, 2, 3, 4, 1, 2, 3, 4, 5, 6]
輸出應該是
[[1, 2, 2, 2], [1, 2, 3, 3], [1, 1, 1, 2, 3, 4], [1, 2, 3, 4, 5, 6]]
我做了什麼來實現這一目標是定義下列函數
def splitter (L):
result = []
tmp = 0
initialPoint=0
for i in range(len(L)):
if (L[i] < tmp):
tmpp = L[initialPoint:i]
result.append(tmpp)
initialPoint=i
tmp = L[i]
result.append(L[initialPoint:])
return result
的功能正在工作g 100%,但我需要的是對itertools做同樣的事情,這樣我就可以提高代碼的效率。有沒有辦法用itertools包來做到這一點,以避免顯式循環?
這是**工作代碼**,您認爲可以改進,請考慮[codereview.se]。 – jonrsharpe
是的。代碼正在工作。我在想也許itertools軟件包有一些可以幫助改進它 –