首页 > 解决方案 > Python 3:使用理解返回空列表而不是以元音开头的单词列表

问题描述

当我最近开始学习 python 3 时,我遇到了 Comprehensions,这真的让我很感兴趣,我尝试将我现有的一些循环程序转换为带有理解的循环。我一直没有成功地试图让其中一个程序以理解的方式运行。如果该单词以元音开头,它会从输入的字符串列表中返回单词列表。

下面给出了正在运行但不使用 Python 3.0 压缩的旧程序。

output_list= []
list_vowel = ['a','e','i','o','u']
for word in input_list: 
    if word[0] in list_vowel:
        output_list.append(word)
print(output_list) 

当我尝试使用理解编写相同的程序时,[] 每次运行代码时,无论 i/p 列表是否为['a','e','i','o','u'] or ["aeiou"] etc

下面给出了使用理解的代码

import ast,sys
input_str = sys.stdin.read()
input_list = ast.literal_eval(input_str)

output_list = []
list_vowel = ["aeiou"]
output_list = [ x for x in input_list if x[0] in list_vowel ]
# for i in list_vowel if x[0] == list_vowel[i]]
print(output_list) 

我究竟做错了什么?或者如果存在我们不能使用 python 理解的情况?

标签: python-3.xlist-comprehension

解决方案


list_vowel = ["aeiou"]如果您替换为list_vowel = "aeiou"或,则该代码有效list_vowel = ['a','e','i','o','u']"a"不在,["aeiou"]因为该可迭代对象中的唯一元素是"aeiou".


推荐阅读