【问题标题】:Are these two python if statements same or not? [duplicate]这两个 python if 语句是否相同? [复制]
【发布时间】:2020-03-26 07:56:08
【问题描述】:
data = [] if data is None else list(data)
data = list(data) if data else []

有人问这两个是否相同,我更喜欢哪一个。我告诉他他们是一样的,但他似乎对答案并不满意。那么,它们是不同的还是相同的,你更喜欢哪一个?

【问题讨论】:

标签: python


【解决方案1】:

不,它们不一样。

你可以颠倒第一个,然后你有

data = list(data) if data is not None else []

对比

data = list(data) if data else []

或者你可以反转第二个,那么你有

data = [] if not data else list(data)

对比

data = [] if data is None else list(data)

所以你的问题归结为

  • if data is not None 是否与if data 相同或替代
  • if data is None 是否与if not data 相同。

这些在语义上是不同的:

  • if data is None 仅在数据为 None 时为真,
  • 如果数据有任何“假”值,if not data 为真:e。 G。 None0""False(){}[]

【讨论】:

  • 最后一行看起来像我的答案。谢谢
  • 'resp.'如果您尝试将其用作德语“bzw”的等价物,则不会在英语中使用。没有它你能重写你的答案吗?
猜你喜欢
  • 2013-10-07
  • 2014-12-28
  • 2020-10-25
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 2011-01-28
  • 1970-01-01
相关资源
最近更新 更多