首页 > 解决方案 > 遍历 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

标签: pythonlistfor-loop

解决方案


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它给了你一个可迭代的,你可以从中获得最大元素。


推荐阅读