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

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

21.10.2015, 00:02. Показов 1471. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru