python - 嵌套 for 和 if 在列表推导中
问题描述
我有以下代码,其中有 for 和 if 。
lines = ['apple berry Citrus ', 34, 4.46, 'Audi Apple ']
corpus = [ ]
for line in lines:
# Check if the element is string and proceed
if isinstance(line, str):
# Split the element and check if first character is upper case
for word in line.split():
if word[0].isupper():
# Append the word to corpus result
corpus.append(word)
print(corpus)
# Output : ['Citrus', 'Audi', 'Apple']
我试图在列表理解中做到这一点,但失败了。我已经尝试如下。
# corpus = [ word if word[0].isupper() for word in line.split() for line in lines if isinstance(line, str)]
我怎样才能在列表理解中实现这一点?
解决方案
以下将起作用:
corpus = [
word for line in lines if isinstance(line, str)
for word in line.split() if word[0].isupper()
]
嵌套推导中的范围起初可能会令人困惑,但您会注意到 and 的顺序for
与if
嵌套循环中的顺序相同。
推荐阅读
- linux - shell 脚本:何时测试最后一个命令?
- linux - execvp: /bin/sh: 使用 crosstool-ng 构建 glibc 2.5 时参数列表太长
- excel - IF Statement using IF, OR, AND with multiple logics ERROR
- javascript - I can't resolve this error : Check the render method of `App`
- python - Pytube3 - YouTube.title 正在返回“YouTube”而不是预期的标题
- php - 如何将 CakeDc\Auth 与未经验证的允许操作一起使用?
- javascript - 我的表单如何在我的本地存储库而不是在 Github 上工作?
- java - 我想在底部导航活动的片段中添加秒表,但 findviewbyid 显示错误。如何解决?
- javascript - 如何将字符串中的文本放入代码中?
- python - 根据条件循环遍历列和切片值