python - 遍历 Python 中的字符串列表
问题描述
我试图弄清楚为什么顶部代码有效而底部代码无效。它们都是 for 循环,只是写法不同,看起来做同样的事情,但第二个循环失败,因为“int object is not iterable”。也许我在这里遗漏了一些明显的东西
这行得通
def longestWord(words):
return max(len(s) for s in words)
x = longestWord(['these', 'are', 'some', 'strings'])
print(x)
这不起作用
def longestWord(words):
for s in words:
return max(len(s))
x = longestWord(['these', 'are', 'some', 'strings'])
print(x)
TypeError: 'int' object is not iterable
解决方案
def longestWord(words):
for s in words:
return max(len(s))
首先,一旦您在单词列表中获得第一个单词,您就会返回。
其次,len()
给你一个整数,说明你调用它的时间。所以,这样做max(len(whatever))
你会得到一个数字的最大值,这就是你得到错误的原因。
这在您的第一个示例中有效的原因:
max(len(s) for s in words)
是因为len(s) for s in words
它给了你一个可迭代的,你可以从中获得最大元素。
推荐阅读
- python-3.x - 如何在模型中保存数据
- time-complexity - 使用优先队列的 Dijkstra 算法
- reactjs - Reactjs - 在子组件中调用父方法
- python - pysftp + py7zr 解压缩挂在存档上
- jsp - 这是什么编码,我可以解码吗?
- node.js - Mongoose:如何通过 ObjectId 更新数组中对象的值?
- c# - 如何读取文本文件而不锁定磁盘上的文件?
- mysql - 从类别表和其他两个表中获取名称
- r - 向 ggplot Boxplot 添加附加点
- java - org.omg.CORBA.ORBPackage.InvalidName: IDL:omg.org/CORBA/ORB/InvalidName:1.0