Форум сайта python.su
py.user.next
Попробуй, перепиши это на генераторы, как того требует второй питон
res1 = filter(lambda i: 1 < i < 5, map(int, filter(str.isdigit, '123abcdef456'))) # print(list(res1)) # [2, 3, 4] # res2 = (int(i) for i in '123abcdef456' if i.isdigit() and 1 < int(i) < 5 ) # print(list(res2)) # [2, 3, 4]
Офлайн
xam1816А где у меня два раза int() происходит?
С фильтром получается много вложенного, чем с генератором
>>> (i for i in (int(i) for i in '123abcdef456' if i.isdigit()) if 1 < i < 5) <generator object <genexpr> at 0x7f29942ccb48> >>> list(_) [2, 3, 4] >>>
Отредактировано py.user.next (Янв. 26, 2022 01:08:08)
Офлайн
узнал для себя еще такой момент, что повторно генераторы и map и filter нельзя использовать, как обойму выстрелял и все, нужно перезаряжать…
seq = (1,2,3,4,5,6,7,8,9) my_map = map(lambda x: x, seq) print('вывожу посмотреть') print('my_map_first',list(my_map)) # >>> my_map_first [1, 2, 3, 4, 5, 6, 7, 8, 9] print('далее перебираю my_map') # for i in my_map: print(i) # print('а его уже нет, такая же ситуация далее с генератором') gen = (i for i in seq) lst = list(gen) # print('gen', list(gen)) # >>> [] print('lst', lst) # >>> lst [1, 2, 3, 4, 5, 6, 7, 8, 9] # my_filter = filter(lambda x: x > 4, seq) print('посмотрел значит такой для себя что как отфильтровалось') print(list(my_filter)) # >>> [5, 6, 7, 8, 9] # print('снова воспользоваться не получиться, он уже пустой') for i in my_filter: print(i + 2) # print('хотя сам он никуда не делся') print(my_filter) # <filter object at 0x0000019A493E3E50> # print('создадим генератор, вывдем два первых элемента') new_gen = (i for i in range(5)) # print(next(new_gen)) # 0 print(next(new_gen)) # 1 print('посмотрим что осталось') print(list(new_gen))# [2, 3, 4] print('выведем еще раз') print(list(new_gen)) # []
Офлайн
xam1816Попробуй выстрелить генератор g() весь
узнал для себя еще такой момент, что повторно генераторы и map и filter нельзя использовать, как обойму выстрелял и все, нужно перезаряжать
>>> def g(): ... while True: ... yield 1 ... >>> list(zip(g(), range(3))) [(1, 0), (1, 1), (1, 2)] >>>
list(g())
Отредактировано py.user.next (Янв. 26, 2022 01:41:15)
Офлайн
Добрый вечер!
программа должна выводить весь список приветствий, но выводит только одно
не могу понять, что я не так делаю
помогите, пжлста))
def convert_name_extract(list_in: list) -> str: for i in list_in: list_in = f'Привет, {i.split()[-1].title()}!' return list_in my_list = ['инженер-конструктор Игорь', 'главный бухгалтер МАРИНА', 'токарь высшего разряда нИКОЛАй', 'директор аэлита'] result = convert_name_extract(my_list) print(result)
Офлайн
olly_wonkaрасскажите поочередно что происходит в вашем коде, напишите сюда подробно
не могу понять, что я не так делаю
Офлайн
xam1816
Офлайн
чтобы увидеть каждый шаг кто что принимает и чем становиться можно выводить с помощью print()
def convert_name_extract(list_in: list) -> str: print('на вход функции поступил список =>','\n') print(list_in,'\n') print('перебираем каждый элемент списка','\n') for n, i in enumerate(list_in, 1): print(f'i = {i}(это {n}й элемент списка)') print('list_in (который изначально содержал в себе список), теперь становиться строкой','\n') list_in = f'Привет, {i.split()[-1].title()}!' print(f'list_in = {list_in}\n') print(f'по окончанию цикла for функция возвращает то что содержиться в list_in ','\n') return list_in # print('=================') print('создали список my_list') my_list = ['инженер-конструктор Игорь', 'главный бухгалтер МАРИНА', 'токарь высшего разряда нИКОЛАй', 'директор аэлита'] # print('переменная result ожидает то что вернет функция convert_name_extract, на вход передали список my_list','\n') # result = convert_name_extract(my_list) print(result)
=================
создали список my_list
переменная result ожидает то что вернет функция convert_name_extract, на вход передали список my_list
на вход функции поступил список =>
['инженер-конструктор Игорь', 'главный бухгалтер МАРИНА', 'токарь высшего разряда нИКОЛАй', 'директор аэлита']
перебираем каждый элемент списка
i = инженер-конструктор Игорь(это 1й элемент списка)
list_in (который изначально содержал в себе список), теперь становиться строкой
list_in = Привет, Игорь!
i = главный бухгалтер МАРИНА(это 2й элемент списка)
list_in (который изначально содержал в себе список), теперь становиться строкой
list_in = Привет, Марина!
i = токарь высшего разряда нИКОЛАй(это 3й элемент списка)
list_in (который изначально содержал в себе список), теперь становиться строкой
list_in = Привет, Николай!
i = директор аэлита(это 4й элемент списка)
list_in (который изначально содержал в себе список), теперь становиться строкой
list_in = Привет, Аэлита!
по окончанию цикла for функция возвращает то что содержиться в list_in
Привет, Аэлита!
Process finished with exit code 0
Отредактировано xam1816 (Янв. 26, 2022 19:36:05)
Офлайн