【问题标题】:Double for statement in list comprehension列表理解中的双重 for 语句
【发布时间】:2017-11-03 22:41:01
【问题描述】:
wordlist = ['cat','dog','rabbit']
letterlist = [ ]

要列出所有单词中的所有字符,我们可以这样做:

letterlist = [word[i] for word in wordlist for i in range(len(word))]

['c', 'a', 't', 'd', 'o', 'g', 'r', 'a', 'b', 'b', 'i', 't']

但是,当我尝试以这种方式进行时:

letterlist = [character for character in word for word in wordlist]

我得到错误:

NameError: name 'word' is not defined on line 9

有人可以解释我在理解列表理解如何工作方面的错误吗?

谢谢。

【问题讨论】:

    标签: string python-3.x list list-comprehension


    【解决方案1】:

    写作

    wordlist   = ["cat", "dog", "rabbit"]
    letterlist = [character for character in word for word in wordlist]
    

    相当于下面的嵌套循环:

    wordlist   = ["cat", "dog", "rabbit"]
    letterlist = []
    
    for character in word:
    
        for word in wordlist:
    
            letterlist.append(character)
    

    此循环将引发与列表理解相同的错误,因为您在将 word 定义为 wordlist 的元素之前尝试引用 character in word。你只是把顺序倒过来。请尝试以下操作:

    letterlist = [character for word in wordlist for character in word]
    

    【讨论】:

    • @Kane 在列表推导中,就像在正常的嵌套循环中一样,您必须先指定外部循环。
    猜你喜欢
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多