繁体   English   中英

生成器 object 防止列表理解

[英]generator object preventing list comprehension

我正在尝试将字符串转换为单词列表,然后转换为单词长度列表。 例如:

myString = 'this is a test string with test words in it'
myString = myString.split(' ')
myNums = []
for i in range(len(myString)):
    myNums.append(len(myString[i]))
print(myNums)
>>[4, 2, 1, 4, 6, 4, 4, 5, 2, 2]

我想我应该能够使用列表理解来做到这一点,例如:

myNums = [len(myString[i] for i in range(len(myString)))]

但是当我这样做时,我得到TypeError: object of type 'generator' has no len()

我不知道生成器 object 在哪里,以及为什么它与列表理解不兼容。 任何提示/建议表示赞赏,谢谢。

您可以通过迭代列表的元素而不是索引来简化表达式:

myNums = [len(w) for w in myString]
print(myNums)

# Output
[4, 2, 1, 4, 6, 4, 4, 5, 2, 2]

您还可以使用函数式编程:

myNums = list(map(len, myString))
print(myNums)

# Output:
[4, 2, 1, 4, 6, 4, 4, 5, 2, 2]

你有一个放错位置的右括号:

myNums = [len(myString[i] for i in range(len(myString)))]
                         ^                             |
                         |___should go there___________|

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM