Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 2, 2023 06:16:47

arrghh
Зарегистрирован: 2023-02-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите написать функцию подсчёта определённых элементов списка

Помогите новичку, не кидайтесь тапками за длинное вступление, пожалуйста, я учусь и хочу разобраться. Пробую написать функцию, которая будет показывать количество определённых элементов в списке для всех элементов, но без повторения. То есть, если в списке есть два элемента 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)

Прикреплённый файлы:
attachment rfrfrfer.jpg (44,0 KБ)

Офлайн

#2 Фев. 2, 2023 08:43:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9867
Репутация: +  853  -
Профиль   Отправить e-mail  

Помогите написать функцию подсчёта определённых элементов списка

Аргумент один подаётся

  
>>> 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
Ещё не могу понять, откуда в выводимом результате берётся None в обоих случаях.
Если return у функции нет, то там в конце функции как бы стоит невидимый return 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)

Офлайн

#3 Фев. 2, 2023 10:43:01

arrghh
Зарегистрирован: 2023-02-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите написать функцию подсчёта определённых элементов списка

Всё понял, огромное спасибо!

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version