Python将字符串列表简化为int

问题描述

我有一个单词列表,我正在尝试计算所有单词组合的总长度。 为什么是我的代码

words = ["a","ab",'adsf']                                             
    
wordlen = reduce(lambda x,y: len(x) + len(y),words) 

给我

Traceback (most recent call last)
  wordlen = reduce(lambda x,words)
TypeError: object of type 'int' has no len()

解决方法

以下是解决问题的一些不同方法:

.gitignore

输出

words = ['zz','abc']
total_len = sum(len(x) for x in words)
print(total_len)
,

如果要使用reduce,请使用初始化参数并删除第一个vals.assign(spArrayInp.begin(),spArrayInp.end());

len()

打印:

from functools import reduce

words = ['Hello','World','This','Is','Example']

wordlen = reduce(lambda x,y: x + len(y),words,0)

print(wordlen)
,

受@Tomerikoo的评论启发,我对reduce(又名fold)进行了更深入的研究。其他语言中的许多reduce / fold实现都要求该操作具有关联性。当操作是关联操作时,应用顺序无关紧要。例如,无论您在何处加上括号,len(“ a”)+ len(“ b”)+ len(“ c”)都会产生相同的结果(因为有限域上的整数加法是关联的)。

当操作不关联时,就会发生混乱。在这种情况下,功能的应用顺序很重要。这是左右折的概念出现的时候。它们都是说明如何添加括号的方式。

还要注意,折叠需要两个功能: 函数i将类型A的对象转换为类型B的另一个对象 Functoin ii将多个B型对象简化为一个C型对象。

左折叠和右折叠本质上使用成对运算,这使一个函数可以将两个功能组合为一个。这就是@Andrej Kesely的答案。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...