2016-07-29 143 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

是固定的,那些错别字... –

相关问题