2016-08-05 47 views
2

例如 如果列表中包含數字3,14,24,6,157,132,12 應該給予最大的無數字爲3如何找到最沒有在列表中位數蟒蛇

+0

首先,編寫一個算法來找出一個數字的位數。然後,在列表中的每個項目上使用該算法,存儲最大的結果。希望這可以幫助。 – Kevin

+0

如果我使用另一個空列表並存儲數字的數字,然後進行排序以獲取最大數字位數。它會使它變長,所以我要求任何其他方式來執行此操作。 –

+0

提示:您不需要對列表進行排序以找到其最大值。 – Kevin

回答

4

如果你的列表中包含負數,你可以通過發電機表達調用abs作爲論據max

>>> mylist = [3, 14, 24, 6, 157, 132, 12, -100] 
>>> len(str(max(abs(x) for x in mylist))) 
3 

注意,上面只有整數工作。如果您的清單包含其他類型的號碼,例如floatDecimal,則需要進行更改。

+0

如果OP希望或不希望減號計爲「一位數」,那麼有趣的(並且很重要)。 –

+0

@MikeRobinson [定義](https://en.wikipedia.org/wiki/Numerical_digit)減號不是數字,但另一方面,只有OP知道他在找什麼。 – niemmi

+0

賓果...正如我在我的答案中所說的那樣,這個問題的「正確」答案完全取決於OP在尋找什麼,以及如何徹底地通過各種微妙的含義和解釋來思考問題。你越想這件事,你就會發問越多:「你的意思是?或者那個?或者......?」 –

0

試試這個:

max = list[0] 
for i in range(1,len(list)): 
    if len(list[i]) > max: 
     max = len(list[i]) 
+0

如果max的長度應該是 – khelwood

+0

,那麼你可能並不是指'max = list [0]'我懷疑'len(list [i])'會失敗,因爲數字沒有長度。 – Kevin

0
tempMaxDig = 0 
for item in numList: 
    num = len(str(item)) 
    if num > tempMaxDig: 
     tempMaxDig = num 


return tempMaxDig 
2

試試這個

mylist = [3, 14, 24, 6, 157, 132, 12] 
print (len(str(max([abs(element) for element in mylist])))) 
#3 
#This will work for negative numbers too 
+0

你已經編輯了你的答案,與沒有給出歸屬的另一個答案相同 –

+0

@Chris_Rands,我在編輯我的代碼後看到了niemmi的答案。 –

0

只需使用:

len(str(max(list))) 

我們在這裏做的是找到最大數量,然後是長度。

0

「試試這個

mylist = [3, 14, 24, 6, 157, 132, 12] 
print (len(str(max(mylist))) 

對不起,我會發表評論,但< 50代表。感謝@soumendra

Soumendra的解決方案有效,但不適用於負數。簡單的方法是:

mylist = [3, 14, 24, 6, 157, 132, 12] 
a = len(str(max(mylist))) 
b = len(str(min(mylist))) 
print max([a, b]) 
0

關鍵是將元素視爲字符串,以便您可以詢問其長度或數字位數。

一些代碼

#Your list 
L = [ 3 , 14 , 24 , 6 , 157 , 132 ,12] 

# Imperative 
max_digits = 0 
for element in L: 
    n_digits = len(str(element)) 
    if n_digits > max_digits: 
     max_digits = n_digits 

# Funtional 
max_digits = reduce(lambda x,y: x if x>y else y, map(lambda x: len(str(x)), L), 0) 
1

第一個要求是確定究竟是什麼的意思是「位數」。例如,-2.1352包含...多少個數字?一?五?六?七?可以爲每一個提出論據。

然後,在浮點數的情況下,存在四捨五入的問題。浮點二進制數爲基數 - 兩個,它們必須以一定數量的位數(十進制)精度轉換爲基數--十個。那個號碼是是固定的嗎?-2.3(兩位數字?一個三位數字)顯示爲-2.3000,因此顯示五位數字(四?六?)。

這樣的「代碼高爾夫」練習可以通過多種方式來解決。第一步是準確地找出你的代碼的意思是