2016-07-29 33 views
-1

我試圖計算列表中的字符組合。在我的腳本中,我可以計算元組,但我不知道如何計算列表中的字符總數。如何在Python中將3個元組合在一起

這是我用過的腳本。

def count(num): 
    character = 0 
    for i in num: 
     character += 1 
    return character 

count ('1234','1234',1234') 

我的答案是3

我想告訴12.我怎麼能這樣做?

+1

'character + = len(i)'? – mgilson

+3

此外,我懷疑你的代碼_actually_給你一個3的答案......它看起來更像是因爲你用3個參數調用count而只會給你一個'TypeError',並且它只需要1. – mgilson

回答

3
def count(num): 
    total = 0 
    for i in num: 
     total += len(i) 
    return total 

或者更短,更Python:

def count(num): 
    return sum(len(x) for x in num) 

而且你需要與列表或元組參數,例如叫它count(('1234','1234','1234'))

您還可以在方法定義中添加一個星號(def count(* num)),使其能夠以與您所做的相同的方式進行調用本來。

+1

sum( map(len,num)) – mtadd

3

我喜歡詹姆斯的方法,因爲它感覺更地道,但是這是一個功能性的方法是什麼樣子:

def count(num): 
    return sum(map(len, num)) 

如果你想通過調用count('1234', '1234', '1234'),而不是count(('1234', '1234', '1234'))工作,你可以使用def count(*num)定義該功能。

最後,如果你想這兩個電話的工作(和你確定原子類型是有史以來唯一一個字符串),你可以這樣做:

def count(*num): 
    return sum(len(n) if isinstance(n, str) else count(*n) for n in num) 
+0

這種方法也更快,它絕對是一個很好的方法。一般來說,我認爲我的可讀性更強,但如果我真的在大數據集上做這件事,我肯定會採用這種方法。 – James

+1

@James你確定這個速度更快嗎?我認爲發電機組的理解非常好。 – L3viathan

+0

[稍微,是啊](http://stackoverflow.com/questions/1247486/python-list-comprehension-vs-map)。他們非常好的優化,這種差異圖會使得很少有用。 – James

0

如果您需要的功能各種操作你可以使用下面的定義(只要mylist不是嵌套列表)。

def countchars(mylist): 
    return sum([len(item) for item in mylist]) 

或者,你可以在元組/列表合併在一起,並使用LEN()來獲得合併後的元組/列表的長度。

+0

這有缺點,它需要首先製作一個新的列表。更好地使用發電機理解。 – L3viathan

+1

它也有不利之處,它計算它後不返回結果;) –

+0

是固定的,那些錯別字... –

相關問題