[英]a = b || c in Python
因此,在JavaScript(可能還有其他語言)中,您可以使用-
a = b || c
a = b || c
這主要在函數內部使用,但可以在一個函數外部使用。 如果b
undefined
則a = c
。
我正在尋找python中的類似方法。 我有一個列表s
最多包含3個數字。 有時會是1或2。如果可能的話,我想做以下的python等效項:
a = s[0] || 0
b = s[1] || 9
c = s[2] || 1
因為我不熟悉所謂的搜索,所以無法進行過多搜索,但嘗試並沒有產生任何結果。
我怎樣才能做到這一點?
在許多語言中,某些值的計算結果為False
。 在Python這是False
, None
, 0
, 0.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
由您自己決定要指的是哪一個,一次要所有人都很少。 如果這樣做,編寫一個表達適當邏輯的函數,然后從表達式中調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.