Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 14, 2022 01:40:53

John441
Зарегистрирован: 2022-01-14
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Реализация метода reduce

Никак не получается реализовать данный метод для поиска слова ‘was’ в предложении:
Используя функцию reduce, реализуйте код, который считает, сколько раз слово was встречается в списке:

sentences = “Nory was a Catholic”, “because her mother was a Catholic”, “and Nory’s mother was a Catholic”, “because her father was a Catholic”, “and her father was a Catholic”, “because his mother was a Catholic”, “or had been”

Моё решение не выдаёт ошибку:

   
from functools import reduce
from typing import List
def count():
    return print(1)
sentences = "Nory was a Catholic", "because her mother was a Catholic", "and Nory’s mother was a Catholic", "because her father was a Catholic", "and her father was a Catholic", "because his mother was a Catholic", "or had been"
list1 = str(sentences)
list1 = list1.split()
char = 'was'
count = 0
was = reduce(lambda x,y: x == 'was', filter(lambda y: y == 'was', sentences))
print(was)

Отредактировано FishHook (Янв. 14, 2022 10:24:28)

Офлайн

#2 Янв. 14, 2022 11:15:46

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1352
Репутация: +  118  -
Профиль   Отправить e-mail  

Реализация метода reduce

 from functools import reduce
sentences = "Nory was a Catholic", "because her mother was a Catholic", "and Nory’s mother was a Catholic", "because her father was a Catholic", "and her father was a Catholic", "because his mother was a Catholic", "or had been"
res = reduce(lambda a, b: a + b, map(lambda i: 1 if 'was' in i else 0, sentences))
print(res)

Онлайн

#3 Янв. 14, 2022 11:39:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Реализация метода reduce

xam1816
ваша программа не будет работать правильно, если в одном предложени будет больше одного слова was

John441

Моё решение не выдаёт ошибку:
в вашем решении нет ни одной правильной строки, это просто нагромождение ерунды

   
from functools import reduce
sentences = ["Nory was a Catholic", "because her mother was a Catholic", "and Nory's mother was a Catholic",
             "because her father was a Catholic", "and her father was a Catholic", "because his mother was a Catholic", "or had been"]
def words(lst):
    for sentence in lst:
        for w in sentence.split():
            yield w
words_generator = words(sentences)
was_count = reduce(lambda a, b: a + b, (1 for w in words_generator if w == 'was'), 0)
print(was_count)



Отредактировано FishHook (Янв. 14, 2022 11:39:52)

Офлайн

#4 Янв. 14, 2022 12:26:53

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1352
Репутация: +  118  -
Профиль   Отправить e-mail  

Реализация метода reduce

FishHook
ваша программа не будет работать правильно, если в одном предложени будет больше одного слова was

точно, тогда так

 res = reduce(lambda a, b: a + b, [i.lower().split().count('was') for i in sentences])

###
 [i.lower().split().count('was') for i in sentences]
☝️
вместо
 map(lambda i: i.lower().split().count('was'), sentences)

Онлайн

#5 Янв. 14, 2022 12:37:18

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Реализация метода reduce

xam1816
а зачем вам список то? map у вас был генератором, то есть он не занимает практически нисколько памяти и не отнимает процессорное время на построение вектора и связанные с этим копирования памяти и аллокации. Вам же не нужен список, вы не собираетесь его переиспользовать, ну так и юзайте генератор



Офлайн

#6 Янв. 14, 2022 17:37:17

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1352
Репутация: +  118  -
Профиль   Отправить e-mail  

Реализация метода reduce

FishHook
а зачем вам список то? map у вас был генератором

👌
 print(type([i.lower().split().count('was') for i in sentences])) # <class 'list'>
print(type((i.lower().split().count('was') for i in sentences)))# <class 'generator'>
все понял
я думал что в круглых скобках он превратится в кортеж

Онлайн

#7 Янв. 14, 2022 22:25:33

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2750
Репутация: +  184  -
Профиль   Отправить e-mail  

Реализация метода reduce

> Используя функцию reduce, реализуйте код, который считает, сколько раз слово was встречается в списке:

Мсье который придумал использовать свёртки для подсчёта слов определённо знает толк в извращениях…

 >>> reduce(lambda x, y: x + (1 if y == "was" else 0), "Nory was a Catholic was".split(), 0)
2



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version