Форум сайта python.su
Помогите новичку, не кидайтесь тапками за длинное вступление, пожалуйста, я учусь и хочу разобраться. Пробую написать функцию, которая будет показывать количество определённых элементов в списке для всех элементов, но без повторения. То есть, если в списке есть два элемента x и два элемента y — программа по задумке должна писать “элементов x дано: 2”, “элементов y дано: 2” и так далее.
Вот мой код. Если я помещаю финальную команду print в цикл for e…, то, понятное дело, получается результат как на приложенном скриншоте — для каждого индекса выводится результат. Если print поместить в цикл for i…, то почему-то (я не могу понять, почему) выводится лишь количество элементов, соответствующих самому последнему в списке, то есть, “элементов 4 дано: 3”. Ещё не могу понять, откуда в выводимом результате берётся None в обоих случаях.
def county(*args): for i in args: for e in i: el_x_count = i.count(e) print("элементов", str(e), "дано: ", el_x_count) spis = [1, 2, 3, 4, 4, 5, 5, 4] print(county(spis))
Отредактировано arrghh (Фев. 2, 2023 07:09:08)
Прикреплённый файлы:
rfrfrfer.jpg (44,0 KБ)
Офлайн
Аргумент один подаётся
>>> def county(arg): ... for e in arg: ... el_x_count = arg.count(e) ... print("элементов", e, "дано:", el_x_count) ... >>> spis = [1, 2, 3, 4, 4, 5, 5, 4] >>> county(spis) элементов 1 дано: 1 элементов 2 дано: 1 элементов 3 дано: 1 элементов 4 дано: 3 элементов 4 дано: 3 элементов 5 дано: 2 элементов 5 дано: 2 элементов 4 дано: 3 >>>
>>> def county(arg): ... seen = set() ... for e in arg: ... if e in seen: ... continue ... seen.add(e) ... el_x_count = arg.count(e) ... print("элементов", e, "дано:", el_x_count) ... >>> spis = [1, 2, 3, 4, 4, 5, 5, 4] >>> county(spis) элементов 1 дано: 1 элементов 2 дано: 1 элементов 3 дано: 1 элементов 4 дано: 3 элементов 5 дано: 2 >>>
arrghhЕсли return у функции нет, то там в конце функции как бы стоит невидимый return None.
Ещё не могу понять, откуда в выводимом результате берётся None в обоих случаях.
>>> def f(arg): ... arg ... >>> print(f('abc')) None >>> >>> >>> def f(arg): ... arg ... return None ... >>> print(f('abc')) None >>> >>> >>> def f(arg): ... print(arg) ... >>> print(f('abc')) abc None >>> >>> >>> def f(arg): ... print(arg) ... return None ... >>> print(f('abc')) abc None >>> >>> >>> def f(arg): ... return arg ... >>> print(f('abc')) abc >>> >>> >>> def f(arg): ... print(arg) ... >>> f('abc') abc >>> >>> >>> def f(arg): ... return arg ... >>> f('abc') 'abc' >>>
Отредактировано py.user.next (Фев. 2, 2023 08:46:32)
Офлайн
Всё понял, огромное спасибо!
Офлайн