從返回元組的函數中獲取單個(第一個)值的Pythonic方法是什麼?從返回元組的函數中獲取單個(第一個)值的正確方法
我已經提出了兩種解決方案的工作
Byte=unpack_from('B',Inbuff,42)[0]
VS
Byte,=unpack_from('B',Inbuff,42)
個人而言,我更喜歡第一個,因爲它不會打破,如果返回元組有多個值(不打算在這裏發生,但在一個更通用的情況下可能)
從返回元組的函數中獲取單個(第一個)值的Pythonic方法是什麼?從返回元組的函數中獲取單個(第一個)值的正確方法
我已經提出了兩種解決方案的工作
Byte=unpack_from('B',Inbuff,42)[0]
VS
Byte,=unpack_from('B',Inbuff,42)
個人而言,我更喜歡第一個,因爲它不會打破,如果返回元組有多個值(不打算在這裏發生,但在一個更通用的情況下可能)
如果你特別想要第一個值(看起來你是這麼做的,但是你的問題只是說了「單個值」而不是「第一個值」),你的第一個方法會更好。第二個更像是一個Python派對技巧(並且,正如sweeneyrod指出的那樣,如果它接收到的元組長度超過一個元素,它將會中斷)。
對於Python 3.x我贊成第三個:
byte, *_ = unpack_from('B',Inbuff,42)
這將元組的其餘部分存儲在變量_
中,這是一次性變量最常用的值。
第二個對我來說似乎很奇怪。這個函數似乎不可能只返回只有一個元素的元組。第一種方法的優點是對未使用Python的人員和特定的功能(如迭代解包)更易讀。
對於Python 2.x,我認爲第一個更好。 「可讀性計數」,和它更健壯。
請注意,「元組的其餘部分」存儲爲一個列表,這意味着'* _'將不得不遍歷整個元組並將其大部分扔掉。使用'[0]'避免創建一個無用的列表。 – Bakuriu
我使用的是2.7版本。 (應該已經清楚了)。感謝sweeneyrod,你的解決方案對於版本3非常明確 – Burtski