Найти - Пользователи
Полная версия: Считать строку формата '[bla, bla, [d, d, 12]]' в список питона
Начало » Центр помощи » Считать строку формата '[bla, bla, [d, d, 12]]' в список питона
1
slava0505
Здравствует.
Решаю олимпиадную задачу, в которой на вход подаются строки(их до 100000 штук) формата:
 ['Ivan', 'Smirnov', 'Petrovich', 9, ['1383', 4, 't'], [9, 9, 10, 9, 10], 0, 1]
Нужно проработав с некоторыми их местами посчитать среднее и выдать определенную фамилию.
Пытался работать с этим как со строкой, и просто брать нужные мне места. Но на седьмом тесте все валится.
Отсюда вопрос: можно ли это считать именно как список пистона, со строками, списками внутри? Или для этого нужно писать отдельную часть программы
py.user.next
Конкретнее задание напиши.
Rodegast
> на вход подаются строки(их до 100000 штук) … Нужно проработав с некоторыми их местами посчитать среднее и выдать определенную фамилию.

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

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

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

P.S. Своё решение сюда тоже напиши.
PEHDOM
slava0505
Отсюда вопрос: можно ли это считать именно как список пистона, со строками, списками внутри?
Самый простой cпособ это конечно же eval , или если, по какойто причине, вы считаете неприемлимым использование евал, то ast.literal_eval более безопасен.
Но это все при условии что у вас все строки на входе в таком же виде. А валиться у вас оно может по тысяче причин, нужно смотреть что вам подается, что вы с этим делаете и что проверяет седьмой тест.
marvellik
slava0505
как список пистона, со строками
как список пистона не уверен но для питона это и есть список где часть элементов это строки, часть списки( состоящие из строк и чисел) а часть числа. еслы бы вы точно писали с какими местами проработать что выдать среднее и в зависимости от чего вывести фамилию то вам думаю помогут. или если ссылку на саму задачу или ее полный текст выложить
slava0505
Пытался работать с этим как со строкой, и просто брать нужные мне места
из списка тоже можно брать нужные места

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

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
marvellik
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']
теперь у нас список и можно брать элементы
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB