Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 20.10.2015
Сообщений: 28

Ускорение работы программы

21.10.2015, 00:02. Показов 1494. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import time
t1 = time.clock()
mas = []
mas1 = []
mas2 = []
with open('input.txt', 'r') as inp:
    n = int(inp.readline().strip())
    for i in range(n):
        mas1.append(inp.readline().strip())
    m = int(inp.readline().strip())
    print (mas1)
    for i in inp:
        print (i)
       if i in mas1:
            mas.append(i.strip())
            print ('blo')
        else:
            mas2.append(i.strip())
with open('output.txt', 'w') as out:
    out.write('Friends:')
    for i in range(n-2):
        out.write(' '+mas1[i]+',')
    out.write(' '+mas1[i+1]+'\n')
    out.write('Mutual Friends:')
    for i in range(len(mas)):
        out.write(' '+mas[i]+',')
    out.write ('\n')
    out.write('Also friend of:')
    for i in range(len(mas2)-1):
        out.write(' '+mas2[i]+',')
    out.write(' '+mas2[i+1])
print (mas1)
print (mas)
print (mas2)
print (time.clock()-t1)
1)Почему не работают корректно строчки с 12 по 18? (mas, не хочет заполняться не при каких условиях!)
2)И можно ли как-нибудь ускорить эту программу?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2015, 00:02
Ответы с готовыми решениями:

Ускорение работы кода
Переработка пластика Любимый напиток Андрея — «Швепси». В магазинах он продается в литровых пластиковых бутылках и пользуется большой...

Ускорение программы
Всем привет. Помогите ускорить программу: def f(l): n = len(l) a = checking = flag = False for i in...

Ускорение выполнения программы
Задача программы. Как ускорить выполнение этого кода? for i in range(123456789, 223456790): count = 0 for i2 in range(2, i): ...

10
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
21.10.2015, 00:07
1. Что именно Вы хотите получить
2. Где пример input.txt ?
0
1 / 1 / 0
Регистрация: 20.10.2015
Сообщений: 28
21.10.2015, 00:23  [ТС]
Вот условие: http://acm.dvpion.ru/index.asp... id_task=56
input:
3
vasya-pupkin
bill-hates
ivan-ivanov
2
vasya-pupkin
destroyer

output:
Friends: bill-hates, ivan-ivanov, vasya-pupkin
Mutual Friends: vasya-pupkin
Also Friend of: destroyer

Добавлено через 9 минут
Алгоритм:
1)Создаём список(mas1) из имён из первого "столбца"
2)Проверяем наличие во 2-ом "столбце" наличие имён из 1-ого "столбца"
3) а) Если имена совпадают, то записываем в один список(mas)
б) Иначе: записываем имена в в другой список (mas2)
4)Записываем данные в файл
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
21.10.2015, 00:46
Лучший ответ Сообщение было отмечено Cheshires как решение

Решение

Алгоритм:
  1. читаем файл целиком с помощью readlines
  2. певый список = file_list[1:int(file_list[0])+1]
  3. читаем с file_list[int(a[0])+2:int(a[0])+2+int(a[int(a[0])+1])]
1
1 / 1 / 0
Регистрация: 20.10.2015
Сообщений: 28
22.10.2015, 00:06  [ТС]
Подскажите, как уменьшить время записи данных в файл. Строка с 12 по 29.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
with open('input.txt', 'r') as inp:
    file_list = inp.read().split()
list_1 = file_list[1:int(file_list[0])+1]
list_3 = file_list[int(file_list[0])+2:int(file_list[0])+2+int(file_list[int(file_list[0])+1])]
list_2 = list(set(list_1).intersection(set(list_3)))
list_1.sort()
list_2.sort()
list_3.sort()
for i in range(len(list_2)):
    if list_2[i] in list_3:
        list_3.remove(list_2[i])
with open('output.txt', 'w') as out:
    out.write('Friends:')
    if len(list_1) != 0:
        for i in range(int(file_list[0])-1):
            out.write(' '+list_1[i]+',')
        out.write(' '+list_1[-1]+'\n')
    else: out.write('\n')
    out.write('Mutual Friends:')
    if len(list_2) != 0:
        for i in range(len(list_2)-1):
            out.write(' '+list_2[i]+',')
        out.write(' '+list_2[-1]+'\n')
    else: out.write('\n')
    out.write('Also Friend of:')
    if len(list_1) != 0:
        for i in range(len(list_3)-1):
            out.write(' '+list_3[i]+',')
        out.write(' '+list_3[-1])
input:
3
vasya-pupkin
bill-hates
ivan-ivanov
2
vasya-pupkin
destroyer

output:
Friends: bill-hates, ivan-ivanov, vasya-pupkin
Mutual Friends: vasya-pupkin
Also Friend of: destroyer

Алгоритм записи в файл:
Я прогоняю каждый список(list_1 ; list_2; list_3) с помощью цикла for, исключая тот случай, когда данные отсутствуют.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
22.10.2015, 11:37
Цитата Сообщение от Marinero Посмотреть сообщение
с помощью readlines
Зачем писал? Читает сразу с переводами строк и потом не надо их добавлять при записи + записываете сразу весь список одной командой, а не каждую строчку перебираете — вот Вам и ускорение.
0
1 / 1 / 0
Регистрация: 20.10.2015
Сообщений: 28
22.10.2015, 17:44  [ТС]
Честно говоря, ничего не понял.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
22.10.2015, 18:39
Команда такая
Python
1
file_list = inp.readlines()
0
1 / 1 / 0
Регистрация: 20.10.2015
Сообщений: 28
22.10.2015, 18:47  [ТС]
Не в этом проблема XD
Проблема в том, что когда мы читаем весь файл через readlines, то все имена будут иметь приписку "\n", а значит, что при выводи у нас все имена будут в столбик, а не в строчку. И как я понял, всё это не будет иметь смысла, если я Вас правильно понял.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
22.10.2015, 19:17
Лучший ответ Сообщение было отмечено Cheshires как решение

Решение

Всё равно сначала соберите всё в 1 список/строку и запишите за 1 раз.
1
1 / 1 / 0
Регистрация: 20.10.2015
Сообщений: 28
23.10.2015, 21:53  [ТС]
Спасибо большое! Запись всего в одну строку ускорило программу и позволило пройти тесты )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.10.2015, 21:53
Помогаю со студенческими работами здесь

Поворот двумерного массива на 90 граусов (ускорение программы)
Я написал следующую программу: n=int(input()) m=int(input()) a= b=len(a) c=len(a) d=*b for i in range(c)] if m>1 and...

Ускорение работы программы
Добрый день. мне необходима помощь в пересмотре кода. Требуется ускорение обработки данных архив. Рассматриваю любые предложения. ...

Ускорение работы программы
доброго времени суток. Возникла следующая проблема: using System; using System.Collections.Generic; using System.Diagnostics; ...

Ускорение работы программы
Написал программу для РГР по Компьютерной геометрии и графике. Парсит файл типа *.obj (wavefront) и рисует на picturebox. Проблема в том,...

ускорение работы программы
написал программу {Дан файл, содержащий русский текст. Найти в тексте N<=2000 самых длинных слов, содержащих не менее двух букв из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru