【问题标题】:Explanation for (t for t in L if t ) in python [closed]python中(t for t in L if t)的解释[关闭]
【发布时间】:2019-11-07 14:23:50
【问题描述】:

在 python 中有一个练习可以从元组列表中删除一个空元组。

输入:

input: [(), (), ('',), ('a', 'b'), ('a', 'b', 'c'), ('d')]

预期输出

output: [('',), ('a', 'b'), ('a', 'b', 'c'), 'd']

这是他们提供的解决方案。

L = [(), (), ('',), ('a', 'b'), ('a', 'b', 'c'), ('d')]
L = [t for t in L if t]
print(L)

但我无法理解条件L = [t for t in L if t]。谁能帮我解决这个问题?

【问题讨论】:

  • 你不明白什么?列表理解? if?
  • 如果您执行bool(())bool(''),您将看到空列表和字符串返回False。所以命令if t如果返回True,则基本上返回t
  • 欢迎来到 SO。这不是讨论论坛或教程。请使用tour 并花时间阅读How to Ask 以及该页面上的其他链接。花一些时间与the Tutorial 练习示例。
  • @wwii 你能链接到特定的 SO 文档,阻止用户询问他们不理解的特定代码行吗?
  • @CorentinPane - 我认为没有任何具体的禁令,但如果您阅读我链接到的页面上所有链接的全部内容,您就会有所了解。在 Meta 上搜索会让您了解社区的想法——尽管您可能会在那里发现相互矛盾的信息。这是一个开始 - 阅读与“How does this code works” questions (duplicate) 类似的短语相关的所有内容并进行其他搜索。顺便说一句,这不是我的 DV。

标签: python list tuples


【解决方案1】:

L = [t for t in L if t] 可以这样写成伪代码:

result_list = []

for t in L:
  if t is True:
    result_list.append(t)

伪代码不会替换原始列表,它会创建一个新列表。您还需要知道空元组在 Python 中的计算结果为 False。

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 2011-11-08
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多