我正在努力思考为什么顶部代码有效而底部代码无效。它们都是 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/