如何在Python中将3个元组组合在一起

如何在Python中将3个元组组合在一起,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我试图数一数列表中的字符组合。在我的脚本中,我可以计算元组,但我不知道如何计算列表中的字符总数 这是我使用的脚本 def count(num): character = 0 for i in num: character += 1 return character count ('1234','1234',1234') 我的答案是3 我想展示给你看。我该怎么做 def count(num): total = 0 for i in num

我试图数一数列表中的字符组合。在我的脚本中,我可以计算元组,但我不知道如何计算列表中的字符总数

这是我使用的脚本

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

count ('1234','1234',1234')
我的答案是3

我想展示给你看。我该怎么做

def count(num):
    total = 0
    for i in num:
        total += len(i)
    return total
或者,更短、更具蟒蛇特征:

def count(num):
    return sum(len(x) for x in num)
您还需要使用列表或元组参数调用它,例如count(('1234','1234','1234'))


您还可以在方法定义中添加星号(def count(*num)),以使其能够以与最初相同的方式被调用。

我更喜欢James方法,因为它感觉更为惯用,但这是函数式方法的外观:

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)

如果各种操作需要函数,可以使用以下定义(只要mylist不是嵌套列表)


或者,您可以将元组/列表合并在一起,并使用len()获得合并元组/列表的长度。

character+=len(i)
?此外,我怀疑您的代码是否真的给出了3的答案。。。它看起来更像是给你一个
TypeError
,因为你用3个参数调用
count
,而且只需要1个参数。这个方法也更快,这绝对是一个很好的方法。一般来说,我认为我的方法更具可读性,但如果我真的在大数据集上这样做,我肯定会使用这种方法。@James你确定这样会更快吗?我认为生成器的理解已经得到了很好的优化。。它们都经过了很好的优化,这种差异图很少有用。这有一个缺点,那就是它需要先创建一个新的列表。最好使用生成器理解。它还有一个缺点,即计算后不会返回结果;)是固定的,那些打字错误。。。
def countchars(mylist):
    return sum([len(item) for item in mylist])