Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 20, 2012 08:58:07

NAleshkin
Зарегистрирован: 2012-08-20
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование массива данных

Всем привет!
Помогите, пожалуйста, с задачей! Я новичок в Python, поэтому у меня решить не получается.
Задача такая:
Есть массив данных:
10*0.099 0.3729964 0.3723636 0.3717297 0.3710958 0.3704624 10*0.099
0.3730189 0.3723876 0.3717551 0.371122 0.3704891 0.3698573 0.3692272
10*0.099 0.3724056 0.3717746 0.3711427 0.3705108 0.3698795 0.3692496
0.3686219 10*0.099 0.3724174 0.3717883 0.371158 0.3705273 0.3698969
Его надо преобразовать, по сути, переписать в том же виде за исключением одного, значение которое пишется со знаком “*” должно “разворачивается”.
К примеру, 10*0.5 в новый массив должно записаться как 0.5 десять раз.
Самая проблема для меня это как “развернуть” значение, а с остольным я думаю справлюсь.

Отредактировано NAleshkin (Авг. 20, 2012 09:12:15)

Прикреплённый файлы:
attachment Array_read.txt (593 байта)

Офлайн

#2 Авг. 20, 2012 10:30:41

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Преобразование массива данных

s=['10*0.099', '0.3729964', '0.3723636', '0.3717297', '0.3710958', '0.3704624', '10*0.099']
temp=[map(float,x.split('*')) for x in s]
result=[]
for x in temp:
  if len(x)==1:
    result.append(x[0])
  else:
    result+= [x[1]]*int(x[0])
print result



Офлайн

#3 Авг. 20, 2012 10:35:31

NAleshkin
Зарегистрирован: 2012-08-20
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Преобразование массива данных

Вот СПАСИБО огромное!

Офлайн

#4 Авг. 21, 2012 06:39:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

Преобразование массива данных

>>> s = '10*0.099 0.3729964 0.3723636 0.3717297 0.3710958 0.3704624 10*0.099'
>>> res = []
>>> for i in s.split():
...     if '*' in i:
...         a, b = map(float, i.split('*'))
...         res.extend(int(a) * (b,))
...     else:
...         res.append(float(i))
... 
>>> res
[0.099, 0.099, 0.099, 0.099, 0.099, 0.099, 0.099, 0.099, 0.099, 0.099, 0.3729964, 0.3723636, 0.3717297, 0.3710958, 0.3704624, 0.099, 0.099, 0.099, 0.099, 0.099, 0.099, 0.099, 0.099, 0.099, 0.099]
>>>
то же самое, пояснее



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version