2017-05-28 25 views
2

例如值a = (3, False, False, False) 或= (False, 4, False, False)如何分配僅是一個元組內真正到可變

我怎樣才能元組的唯一的真值分配給一個變量,在python?

我不關心的位置,有將永遠不會成爲2倍的值是真的,所以

例如,如果

a = (3, False, False, False), 

我想B = 3(唯一的真正價值的) 或如果

a = (False, 4, False, False) 

欲b = 4

編輯:

我可以這樣做:

for value in a: 
    if value: 
     print value 

但有這樣一個簡單的問題不太複雜的方式?

+0

如果元組中存在多個非錯誤值,會發生什麼? –

+0

它不會發生,但如果它是,它會採取第一個真正的價值,因爲無論如何這兩個真正的價值將是相等的 – Tissuebox

回答

1
a = [i for i in a if i is not False][0] 
+0

謝謝它的工作,pythonic!作爲這種寫作方式的新手,我想知道[0]是什麼,它做了什麼,你能解釋一下嗎? – Tissuebox

+2

@Tissuebox它是由列表理解創建的列表的索引。由於只有一個「真理」元素,列表中的第一個索引就是它。 –

4

使用filterNone的功能元素:

>>> a=filter(None,(3, False, False, False)) 

或者只是實際上使用循環與break和迴路元件的最後一個值是你所追求的:

>>> for e in (3, False, False, False): 
... if e: break 
... 
>>> e 
3 
0

使用next和生成器表達式。

next(x in a if x) 
相關問題