python-3.x - 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 理解的情况?
解决方案
list_vowel = ["aeiou"]
如果您替换为list_vowel = "aeiou"
或,则该代码有效list_vowel = ['a','e','i','o','u']
。"a"
不在,["aeiou"]
因为该可迭代对象中的唯一元素是"aeiou"
.
推荐阅读
- typescript - 在枚举上使用计算值
- android - Android - Recyclerview 中的 onBindViewHolder 内的 OnResume
- uml - 你如何显示对同一个类的多个函数调用?
- php - Laravel 显式路由模式绑定在某些情况下不起作用?
- xml - 无法使用 notepad++ 针对 XSD 验证 XML 文件
- python - 如何在 OSGi 部署中包装 Python 进程
- c++ - 使用标准范围时对“结束”的引用不明确
- angular - 如何以角度挂钩 ngOnInit 事件?
- json - 呈现按动态类别分组的产品
- javascript - 如何在 React Native 中使用带有 BackgroundTimer 的 PubNub