生成器对象阻止列表理解
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()
我不知道生成器对象在哪里,也不知道为什么它与列表理解不兼容。任何 tips/suggestions 感谢,谢谢。
您可以通过迭代列表元素而不是索引来简化表达式:
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___________|
我正在尝试将字符串转换为单词列表,然后转换为单词长度列表。例如:
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()
我不知道生成器对象在哪里,也不知道为什么它与列表理解不兼容。任何 tips/suggestions 感谢,谢谢。
您可以通过迭代列表元素而不是索引来简化表达式:
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___________|