拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 生成器物件阻止串列理解

生成器物件阻止串列理解

白鹭 - 2022-03-04 1938 0 0

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

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()

我无法弄清楚生成器物件在哪里,以及为什么它与串列理解不兼容。任何提示/建议表示赞赏,谢谢。

uj5u.com热心网友回复:

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

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]

uj5u.com热心网友回复:

你有一个错位的右括号:

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

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *