python - 遍历 Python 中的字符串列表

标签 python list for-loop

我正在努力思考为什么顶部代码有效而底部代码无效。它们都是 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 - 遍历 Python 中的字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53242186/

相关文章:

列表问题的 Java 引用?

java - 了解 for 循环和数组索引

python - PyQt 显示全屏图像

python - PySerial 从 Arduino 读取时速度变慢

python - 为什么可以在使用变量定义函数后定义变量?

objective-c - 哪个代码块是 'better' ?

java - 如何打印两个前端相接触的三角形?

python - 在 Python 中使用 PMML 模型

python - collective.googleanalytics 报告中的自定义维度

php - 在 yii 中使用 listdata 连接 2 列