当前位置: 首页 > 面试题库 >

Python-列表理解中的if/else?

谭浩皛
2023-03-14
问题内容

如何在Python中执行以下操作?

row = [unicode(x.strip()) for x in row if x is not None else '']

实质上:

  1. 用空字符串替换所有的None,然后
  2. 执行功能。

问题答案:

你可以完全做到这一点,这只是一个订购问题:

[unicode(x.strip()) if x is not None else '' for x in row]

一般来说,

[f(x) if condition else g(x) for x in sequence]

而且,if仅对于具有条件的列表理解而言,

[f(x) for x in sequence if condition]

请注意,这实际上使用了一种不同的语言构造,即条件表达式,它本身不是理解语法的一部分,而ifafter则for…in是列表理解的一部分,用于从可迭代的源中筛选元素。

条件表达式可用于各种情况,其中你需要根据某些条件在两个表达式值之间进行选择。这与其他语言中存在的三元运算符?:相同。例如:

value = 123
print(value, 'is', 'even' if value % 2 == 0 else 'odd')


 类似资料:
  • 问题内容: 我想知道,是否可以将多个条件放入列表理解中?我在文档中没有找到类似的东西。 我希望能够做这样的事情 使用列表理解。我该怎么做? 这有可能吗?如果不是,那么最优雅(pythonic)的方法是什么呢? 问题答案: 怎么样 例如,如果这是 预计到达时间:这是您可以应用条件列表的方式:

  • 问题内容: 我们都知道python的 句法。 但是,列表理解的 AST表示可以容纳多个’if’表达式: 有人可以给我一个python代码示例,该示例会生成带有多个“ if”表达式的AST吗? 问题答案: 只需将它们一个接一个地堆叠: 产生介于11和49之间(含)的整数。

  • 问题内容: 可以将这段代码转换为列表理解吗? 我知道如何转换它的一部分: 但是我不知道如何添加中断,并且文档没有太大帮助。 任何帮助,将不胜感激。 问题答案: 分解一下: 将产生一个清单。您想要的是列表中的第一项。一种方法是使用下一个功能: Next返回迭代器的下一项。在像列表这样的可迭代的情况下,它最终采用了第一项。 但是没有理由真正构建列表,因此我们可以改用生成器表达式: 另外,请注意,如果生

  • 问题内容: 更多有关python列表理解语法的信息。我有一个列表推导,它产生给定范围的奇数列表: 这构成了一个过滤器-我有一个源列表,其中删除了偶数()。我想在这里使用if-then-else之类的东西。以下代码失败: 有一个类似if-else的python表达式: 如何在列表理解中使用它? 问题答案: 是您要为每个元素返回的表达式的语法。因此,您需要: 混淆是由于您在第一个示例中使用 过滤器 而

  • 问题内容: 加入列表: join 必须采取迭代。 显然,join的论点是,这是一个列表理解。 看这个: 现在,join的参数为,但结果相同。 为什么?是否str还会产生列表或可迭代项? 问题答案: 这称为生成器表达式,并在PEP 289中进行了说明。 生成器表达式和列表理解之间的主要区别在于前者不在内存中创建列表。 请注意,还有第三种编写表达式的方法:

  • 问题内容: 是否可以在Python中定义递归列表理解? 可能是一个简单的示例,但类似于: 这样有可能吗? 问题答案: 不,没有(记录,可靠,稳定,… ;-)引用“当前理解”的方法。您可以只使用一个循环: 当然,这是非常昂贵的(O(N平方)),因此您可以使用辅助工具对其进行优化(我假设将项目的顺序与中的项目顺序保持一致,否则可以做到;-)。 ..: 对于非常长的列表(O(N)而不是N平方),这要快得