簡體   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