2015-10-16 104 views
-2

如果輸入(1234)並且您希望輸出爲 ([1],[2,3,4],[])如何創建列表元素的元組

或者輸入爲122.3輸出是 ([1],[2,2],[3])

templistint = [1,2,3,4] 
temptuple = [(e,) for e in templistint] #This is as close as I can get. 
print (temptuple) 
[(1,),(2,),(3,),(4,)] 

如果這是模糊的讓我知道!我會發布更多自己的工作,但這不是很連貫。我一直在試圖弄清楚如何將它變成這種格式。例如輸入(4321)的輸出是([4],[3],[2],[1])。

對不起,讓我更清楚。

輸入(4321) 輸出([4],[3,2,1],[]) 4是前導數,3,2,1爲數字直到decimalpoint和[]因爲小數點後面沒有數字,因此爲空。

認爲它是這樣的: 輸入(4321.0) 輸出([4],[3,2,1],[])

或者: 輸入(4321.1) 輸出([4] ,[3,2,1],[1])

我希望幫助清除它再次抱歉。

+4

這些分裂的條件是什麼?對我來說似乎很隨意。 –

+0

我沒有看到你想要輸出的模式。 ([1],[2,3,4],[]),([1],[2,2],[3])和([4],[3],[2],[1] )是非常不同的。 – Ryan

+0

您的輸入/輸出樣本沒有任何意義。 '122.3 - >([1],[2,2],[3])''時,'1234 - >([1],[2,3,4],[])''如何?我沒有看到一個足以說明方法的模式。 –

回答

0

我們不是一個編碼服務,但我們可以幫助您掌握基本知識。

首先,你可以用多種方法攻擊這個。我將從假設輸入是一個字符串開始,因爲否則就無法獲得真正準確的小數部分。我們稱之爲num

我們需要先找到小數點:小數部分是它自己的單獨列表。

dec_pt = num.find('.') 
frac_part = num[dec_pt+1:] 

現在,打開的整數部分爲真正的整數

int_part = int(num[:dec_pt]) 

最後,你需要做一個小魔術給你,你有多少的3位塊。 Python有一個內置函數divmod。如果它對你來說是新的,請查看它。從你的Python命令行中播放它,以便了解它是如何工作的。

int_part, chunk = divmod(int_part, 1000) 

你仍然有許多工作要做,但我希望這可以讓你移動。您需要將最後一部分放入循環中以獲得一系列3位塊。你需要將每個塊處理成一個包含三個單位數整數的列表(使用divmod和10)。你需要追加所有這些部分才能得到你想要的答案。

玩得開心。

+0

嘿,我很感激它。我想我自己實際上......大多數情況下,我應該說哈哈。這就是我試圖要求的只是一個起點,我對python的語法很困惑。感謝一大堆花時間來回答這個問題。一旦我完成了我的方法,我會發布它。雖然大聲笑會很醜。 – Stockster

+0

很高興聽到它! 「醜」很好。首先,讓它工作。其次,讓它運作良好。第三,讓它工作得很漂亮。我們有一個「代碼審查」組。 – Prune