2013-12-09 4 views
1

Скажите, что я создал кортеж, как это, используя массив байт:Как преобразовать кортеж в float в python?

import struct 
a = struct.unpack('f', 'helo') 

Как я теперь преобразовать a в поплавок? Есть идеи?

+0

'a' является 1-кортеж со значением флоат ... получить значение ... –

ответ

6

struct.unpack всегда возвращает кортеж, потому что вы можете распаковать несколько значений, а не только один.

Кортеж представляет собой последовательность, точно так же, как список или любую другую последовательность. Таким образом, вы можете индексировать его:

>>> a = struct.unpack('f', 'helo') 
>>> b = a[0] 
>>> b 
7.316105495173273e+28 

... или назначение использования распаковка:

>>> b, = a 
>>> b 
7.316105495173273e+28 

... или петля над ним:

>>> for b in a: 
...  print(b) 
7.316105495173273e+28 

И, конечно, вы можете комбинировать любые из тех, кто в одна строка:

>>> b = struct.unpack('f', 'helo')[0] 
>>> b, = struct.unpack('f', 'helo') 
>>> c = [b*b for b in struct.unpack('f', 'helo')] 

Если t его не очевидно для вас, вы должны прочитать Lists, More on Lists и Tuples and Sequences в уроке.

0

Вы, вероятно, могли бы сделать это:

a = a[0]

+0

Это уже поплавок; это гарантируется с помощью символа формата '' f'' в 'struct.unpack'. Поэтому вызов 'float' не делает ничего полезного. – abarnert

+0

Ну, да, но 'a = a [0]' также делает это. Вы также можете написать 'a = float (a [int (0)]', пока вы на нем. – abarnert

+0

о, вы правы, спасибо. Я неправильно понял, что вы сказали. – Totem

Смежные вопросы