Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2017 11:03:33

slava0505
Зарегистрирован: 2017-10-19
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Считать строку формата '[bla, bla, [d, d, 12]]' в список питона

Здравствует.
Решаю олимпиадную задачу, в которой на вход подаются строки(их до 100000 штук) формата:

 ['Ivan', 'Smirnov', 'Petrovich', 9, ['1383', 4, 't'], [9, 9, 10, 9, 10], 0, 1]
Нужно проработав с некоторыми их местами посчитать среднее и выдать определенную фамилию.
Пытался работать с этим как со строкой, и просто брать нужные мне места. Но на седьмом тесте все валится.
Отсюда вопрос: можно ли это считать именно как список пистона, со строками, списками внутри? Или для этого нужно писать отдельную часть программы

Отредактировано slava0505 (Окт. 19, 2017 11:06:02)

Офлайн

#2 Окт. 19, 2017 11:49:12

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

Считать строку формата '[bla, bla, [d, d, 12]]' в список питона

Конкретнее задание напиши.



Онлайн

#3 Окт. 19, 2017 12:08:15

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2762
Репутация: +  185  -
Профиль   Отправить e-mail  

Считать строку формата '[bla, bla, [d, d, 12]]' в список питона

> на вход подаются строки(их до 100000 штук) … Нужно проработав с некоторыми их местами посчитать среднее и выдать определенную фамилию.

Я хренею с олимпиадных задач.

> Но на седьмом тесте все валится.

Они тебе 100000 строк прислали, вот оно и завалилось. Ты должен в первую очередь оптимизировать своё решение по памяти. Например использовать генераторы.

P.S. Своё решение сюда тоже напиши.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Окт. 19, 2017 12:28:03

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Считать строку формата '[bla, bla, [d, d, 12]]' в список питона

slava0505
Отсюда вопрос: можно ли это считать именно как список пистона, со строками, списками внутри?
Самый простой cпособ это конечно же eval , или если, по какойто причине, вы считаете неприемлимым использование евал, то ast.literal_eval более безопасен.
Но это все при условии что у вас все строки на входе в таком же виде. А валиться у вас оно может по тысяче причин, нужно смотреть что вам подается, что вы с этим делаете и что проверяет седьмой тест.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#5 Окт. 19, 2017 12:38:56

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Считать строку формата '[bla, bla, [d, d, 12]]' в список питона

slava0505
как список пистона, со строками
как список пистона не уверен но для питона это и есть список где часть элементов это строки, часть списки( состоящие из строк и чисел) а часть числа. еслы бы вы точно писали с какими местами проработать что выдать среднее и в зависимости от чего вывести фамилию то вам думаю помогут. или если ссылку на саму задачу или ее полный текст выложить
slava0505
Пытался работать с этим как со строкой, и просто брать нужные мне места
из списка тоже можно брать нужные места

Отредактировано marvellik (Окт. 19, 2017 12:41:47)

Офлайн

#6 Окт. 19, 2017 16:49:42

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2762
Репутация: +  185  -
Профиль   Отправить e-mail  

Считать строку формата '[bla, bla, [d, d, 12]]' в список питона

Короче задача называется “Кто на свете всех умнее?” по ссылке методичка с решением этой задачи и способом оценки.

http://rsr-olymp.ru/upload/files/tasks/5369/2015/5551373-tasks&ans-NTI-9-11-bol_dan_i_mash_obych_ind_part-final-15-6.pdf



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Окт. 19, 2017 21:00:08

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Считать строку формата '[bla, bla, [d, d, 12]]' в список питона

slava0505
в которой на вход подаются строки
поэтому вам на вход подается строка(с символами а не список)
это вы видите список. а для питона это строка как и сказано в условии
'''Каждая строка имеет вид ['Имя',
'Фамилия', ‘Отчество’, число полных лет, ['школа (номер или название)', класс, тип каникул
('t'/'q')], [средний балл по математике(число от 1 до 10), средний балл по русскому языку
(число от 1 до 10), средний балл по физике (число от 1 до 10), средний балл по химии (число
от 1 до 10), средний балл по биологии (число от 1 до 10)], количество дополнительных
занятий в школе, количество детей в семье ребенка].'''
 "['Ivan', 'Smirnov', 'Petrovich', 9, ['1383', 4, 't'], [9, 9, 10, 9, 10], 0, 1]"
 >>> data =  "['Ivan', 'Smirnov', 'Petrovich', 9, ['1383', 4, 't'], [9, 9, 10, 9, 10], 0, 1]"
>>> data = data.replace('[','').replace(']','').replace("'",'').split(',')
>>> print(data)
['Ivan', ' Smirnov', ' Petrovich', ' 9', ' 1383', ' 4', ' t', ' 9', ' 9', ' 10', ' 9', ' 10', ' 0', ' 1']
теперь у нас список и можно брать элементы

Отредактировано marvellik (Окт. 19, 2017 21:03:48)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version