2014-02-23 52 views
2

從返回元組的函數中獲取單個(第一個)值的Pythonic方法是什麼?從返回元組的函數中獲取單個(第一個)值的正確方法

我已經提出了兩種解決方案的工作

Byte=unpack_from('B',Inbuff,42)[0] 

VS

Byte,=unpack_from('B',Inbuff,42) 

個人而言,我更喜歡第一個,因爲它不會打破,如果返回元組有多個值(不打算在這裏發生,但在一個更通用的情況下可能)

+0

我使用的是2.7版本。 (應該已經清楚了)。感謝sweeneyrod,你的解決方案對於版本3非常明確 – Burtski

回答

0

如果你特別想要第一個值(看起來你是這麼做的,但是你的問題只是說了「單個值」而不是「第一個值」),你的第一個方法會更好。第二個更像是一個Python派對技巧(並且,正如sweeneyrod指出的那樣,如果它接收到的元組長度超過一個元素,它將會中斷)。

0

對於Python 3.x我贊成第三個:

byte, *_ = unpack_from('B',Inbuff,42) 

這將元組的其餘部分存儲在變量_中,這是一次性變量最常用的值。

第二個對我來說似乎很奇怪。這個函數似乎不可能只返回只有一個元素的元組。第一種方法的優點是對未使用Python的人員和特定的功能(如迭代解包)更易讀。

對於Python 2.x,我認爲第一個更好。 「可讀性計數」,它更健壯。

+5

請注意,「元組的其餘部分」存儲爲一個列表,這意味着'* _'將不得不遍歷整個元組並將其大部分扔掉。使用'[0]'避免創建一個無用的列表。 – Bakuriu

相關問題