【问题标题】:Is there a way to do assign or append a variable in one-line if-statement in python?有没有办法在 python 的单行 if 语句中分配或附加变量?
【发布时间】:2020-07-03 03:13:41
【问题描述】:

由于变量是从缓存中获取的,所以它可能是 NoneType 或列表,
只是想知道在单行 if 语句中追加或分配而不是

if result:
    result.append(data)
else:
    result = [data]

我已经尝试过:

result.append(data) if result else [data]

但代码返回只会有一个元素。

【问题讨论】:

  • 这个缓存是什么,为什么您从中检索的值有时是无,有时是列表?如果您使用的是 dict,请考虑使用 collections.defaultdictdict.setdefault
  • 您还遇到result = [data] 不会写回缓存的问题,而result.append(data) 会改变现有列表,这可能会影响缓存,具体取决于缓存的实际情况是。
  • 三元 if/else 运算符旨在成为一个表达式(与 if 语句不同)。在表达式中存在副作用通常被认为是一种不好的做法,因为它会使代码变得不那么清晰和可读。我建议继续使用您的第一个示例。您的代码示例也有细微差别。

标签: python python-3.x list


【解决方案1】:

执行此操作的规范方法是

# initialize
result = []

for ...
    result.append(data)

但是,请注意,forappend 的许多应用程序都可以替换为列表推导式。如果您不熟悉该 Python 结构,我强烈建议您阅读有关该主题的教程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多