Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2017, 07:35   #1
Grinvel
Пользователь
 
Регистрация: 25.09.2017
Сообщений: 16
По умолчанию Кортежи и вложенные циклы

Программа удаления лексем, находящихся в одном файле, из другого файла.
Получился такой код:
Код:
import sys
from fileinput import fileno
try:
    f1 = open(sys.argv[1], 'r')
    f2 = open(sys.argv[2], 'r')
except FileNotFoundError:
    print('File "readFile.txt" or "leksems.txt" not found')
    exit()
f3 = open('results.txt', 'w')
for line in f1:
    for line2 in f2:
        for elements in line2.split():
            line = line.replace(elements, '')
    f3.write(line)      
    f2.seek(0)
for f in f1, f2, f3:
    f.close()
Код рабочий, но должен быть написан в функциональном стиле.
Для этого необходимо объединить первые два цикла через кортеж, т.е. одновременное чтение файлов в одном цикле с помощью кортежа.
Как это можно реализовать?
Grinvel вне форума Ответить с цитированием
Старый 12.12.2017, 20:40   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
import sys
from fileinput import fileno
from functools import reduce
try:
    f1 = open(sys.argv[1], 'r')
    removed = reduce((lambda x,y: x|y),map(lambda x: set(x.split()), open(sys.argv[2], 'r'))))
except FileNotFoundError:
    print('File "readFile.txt" or "leksems.txt" not found')
    exit()
f3 = open('results.txt', 'w')
def clean_lexems(s):
     for lex in removed:
         s = s.replace(lex,'')
     return s
for line in map(clean_lexems, f1):
     f3.write(line)

for f in f1, f2, f3:
    f.close()
a.k.a. Angelicos Phosphoros
Мой сайт

Последний раз редактировалось New man; 12.12.2017 в 20:42.
New man вне форума Ответить с цитированием
Старый 13.12.2017, 00:04   #3
Grinvel
Пользователь
 
Регистрация: 25.09.2017
Сообщений: 16
По умолчанию

То что нужно. Спасибо большое!
Grinvel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C#.Вложенные циклы. Николай.К Помощь студентам 1 22.11.2016 21:11
Вложенные циклы kandrash C# (си шарп) 7 14.12.2012 11:46
Вложенные циклы kex Помощь студентам 2 11.10.2010 18:25
Вложенные циклы Chief Паскаль, Turbo Pascal, PascalABC.NET 3 06.01.2009 16:34