繁体   English   中英

a = b || Python中的c

[英]a = b || c in Python

因此,在JavaScript(可能还有其他语言)中,您可以使用-
a = b || c a = b || c这主要在函数内部使用,但可以在一个函数外部使用。 如果b undefineda = c

我正在寻找python中的类似方法。 我有一个列表s最多包含3个数字。 有时会是1或2。如果可能的话,我想做以下的python等效项:

a = s[0] || 0
b = s[1] || 9
c = s[2] || 1

因为我不熟悉所谓的搜索,所以无法进行过多搜索,但尝试并没有产生任何结果。

我怎样才能做到这一点?

在许多语言中,某些值的计算结果为False 在Python这是FalseNone00.0[] () {} ''和每一个对象,其具有将计算得到一个特殊方法False

在您的描述中,您只想填写最多3个元素的列表。 这可以通过以下方式完成:

a, b, c = s + [0,9,1][len(s):]

我认为这在Python中并不是特别优雅-您需要考虑当列表太短并且需要区分None(通常用来表示“不存在”)和0(其结果为假)。

你可以用

a = s[0] if (len(s)>0 and s[0] is not None) else 0

但是,这实际上并不是一个优雅的惯用语单行代码,您必须记住将s的索引写三遍。

或者

# defined once
def get_default(s,idx,default):
    return s[idx] if (len(s)>idx and s[idx] is not None) else default

a = get_default(s,0,0)
b = get_default(s,1,9)
...

如果您要经常执行此操作,并且始终使用列表,则可能会这样做。 我认为这可能只是Java中无法在Python中正常运行的情况,而您必须忍受这种情况。

在第一行尝试一下,但是应该defined s

s[0] if (s and s[0]) else 0

如果列表太短,或者列表中的值是false或未定义,则将在代码中选择替代项。 通过设计不鼓励在Python中使用这种模棱两可的方法,过一会儿就会学会欣赏这种模棱两可的方法。 例如,您可以编写:

a = s[0] or 0                        # fall back to 0 if s[0] is False
a = s[0] if s[0] is not None else 0  # fall back to 0 if s[0] is None
a = s[0] if s else 0                 # fall back to 0 if s is empty

由您自己决定要指的是哪一个,一次要所有人都很少。 如果这样做,编写一个表达适当逻辑的函数,然后从表达式中调用它。

是`a

[英]Is `a<b<c` valid python?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM