Форум сайта python.su
Здравствует.
Решаю олимпиадную задачу, в которой на вход подаются строки(их до 100000 штук) формата:
['Ivan', 'Smirnov', 'Petrovich', 9, ['1383', 4, 't'], [9, 9, 10, 9, 10], 0, 1]
Отредактировано slava0505 (Окт. 19, 2017 11:06:02)
Офлайн
Конкретнее задание напиши.
Офлайн
> на вход подаются строки(их до 100000 штук) … Нужно проработав с некоторыми их местами посчитать среднее и выдать определенную фамилию.
Я хренею с олимпиадных задач.
> Но на седьмом тесте все валится.
Они тебе 100000 строк прислали, вот оно и завалилось. Ты должен в первую очередь оптимизировать своё решение по памяти. Например использовать генераторы.
P.S. Своё решение сюда тоже напиши.
Онлайн
slava0505Самый простой cпособ это конечно же eval , или если, по какойто причине, вы считаете неприемлимым использование евал, то ast.literal_eval более безопасен.
Отсюда вопрос: можно ли это считать именно как список пистона, со строками, списками внутри?
[code python][/code]
Офлайн
slava0505как список пистона не уверен но для питона это и есть список где часть элементов это строки, часть списки( состоящие из строк и чисел) а часть числа. еслы бы вы точно писали с какими местами проработать что выдать среднее и в зависимости от чего вывести фамилию то вам думаю помогут. или если ссылку на саму задачу или ее полный текст выложить
как список пистона, со строками
slava0505из списка тоже можно брать нужные места
Пытался работать с этим как со строкой, и просто брать нужные мне места
Отредактировано marvellik (Окт. 19, 2017 12:41:47)
Офлайн
Короче задача называется “Кто на свете всех умнее?” по ссылке методичка с решением этой задачи и способом оценки.
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
Онлайн
slava0505поэтому вам на вход подается строка(с символами а не список)
в которой на вход подаются строки
"['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)
Офлайн