Программирование

Подсчет вхождений элементов списка Python

Из списка целых чисел подсчитайте появление каждого элемента, добавьте элементы и посчитайте как подсписок.

Список ввода: inp = [7, 9, 7, 4, 3, 5, 3, 6, 9, 3]
Список вывода: out = [[7, 2], [9, 2], [4] , 1], [3, 3], [5, 1], [6, 1]]

# Примечание: где 7 - это элемент списка, а 2 - количество вхождений

Использование вложенных циклов

def count_items(inp):
    for i in range(0, len(inp)):
        a = 0
        row =[]
        if i not in l:
            for j in range(0, len(inp)):
                if inp[i]== inp[j]:
                a = a + 1
            row.append(inp[i])
            row.append(a)
            l.append(row)
     for j in l:
        if j not in out:
           out.append(j)
return out

Вызовите функцию и проверьте вывод:

#call func() 
inp = [7, 9, 7, 4, 3, 5, 3, 6, 9, 3]
l = []
out = []
print(count_items(inp))
Output: [[7, 2], [9, 2], [4, 1], [3, 3], [5, 1], [6, 1]]

Использование метода count ()

def count_items(inp):
    for i in inp:
       row =[]
       ct = 0
       ct = inp.count(i)
       row.append(i)
       row.append(ct)
       l.append(row)
   for j in l:
       if j not in out:
       out.append(j)
   return out

Вызовите функцию и проверьте вывод:

#call func()
inp = [7, 9, 7, 4, 3, 5, 3, 6, 9, 3]
l = []
out = []
print(count_items(inp))
Output: [[7, 2], [9, 2], [4, 1], [3, 3], [5, 1], [6, 1]]

Использование метода counter ()

from collections import Counter
def count_items(inp):
     coll = Counter(inp)
     out = []
     for key,val in coll.items():
          out.append([key,val])
 return out

Вызовите функцию и проверьте вывод:

#call func() 
inp = [7, 9, 7, 4, 3, 5, 3, 6, 9, 3]
print(count_items(inp))
Output: [[7, 2], [9, 2], [4, 1], [3, 3], [5, 1], [6, 1]]

Подводя итог, мы рассмотрели несколько способов подсчета вхождений элементов списка, как показано ниже:

  • count () метод
  • вложенные циклы
  • метод библиотеки коллекций counter ()

Это все, что касается количества вхождений элементов списка.

Спасибо за то, что прочитали мой блог и поддержали его содержание. Признательность всегда помогает поддерживать дух. Постараюсь изо всех сил, чтобы и дальше создавать качественный контент. Свяжитесь со мной, чтобы получать новости о предстоящем новом контенте.