Given a list of numbers, the task is to count the occurrence of each element and add as sublists.
Examples:
Input: l1 = [3, 5, 7, 2, 3, 5, 9.1] Output: [[3, 2], [5, 2], [7, 1], [2, 1], [9.1, 1]] Input: l1 = [1, 1, 2, 2, 3, 1] Output: [[1, 3], [2, 2], [3, 1]]
Note: Format output 2d list is [[‘item1’, ‘count1’], [‘item2’, ‘count2’], …, [‘itemN’, ‘countN’]].
Code #1: Using count() method
# Python program to add the occurrence # of each number as sublists def count_occur(list1, * * kwargs):
# iterate over list item
for i in list1:
row = []
ct = 0
# count function will count occurrence
ct = list1.count(i)
row.append(i)
row.append(ct)
# append 1d list items to 2d list
list2.append(row)
# below code is to eliminate
# repetitive list items
for j in list2:
if j not in unq_l2:
unq_l2.append(j)
return unq_l2
# Driver Code l1 = [ 3 , 5 , 7 , 2 , 3 , 5 , 9.1 ]
list2 = []
unq_l2 = []
print (count_occur(l1))
|
[[3, 2], [5, 2], [7, 1], [2, 1], [9.1, 1]]
Code #2: Using loop method
def count_occur(list1):
for i in range ( 0 , len (l1)):
a = 0
row = []
if i not in l:
for j in range ( 0 , len (l1)):
# matching items from both lists
if l1[i] = = l1[j]:
# on match counter increments by 1
a = a + 1
row.append(l1[i])
row.append(a)
# append function will append
# 1d list items to 2d list
l.append(row)
# below code is to eliminate
# repetitive list items
for j in l:
if j not in unq_l:
unq_l.append(j)
return unq_l
# Driver code l1 = [ 3 , 5 , 7 , 2 , 3 , 5 , 9.1 ]
l = []
unq_l = []
print (count_occur(l1))
|
[[3, 2], [5, 2], [7, 1], [2, 1], [9.1, 1]]
Code #3: Using counter() method
# Python program to add the occurrence # of each number as sublists using counter() method from collections import Counter
def count_occurence(l):
c = Counter(l)
l1 = []
for k,v in c.items():
l1.append([k,v])
return l1
# Driver code l = [ 3 , 5 , 7 , 2 , 3 , 5 , 9.1 ]
print (count_occurence(l))
|
[[2, 1], [3, 2], [9.1, 1], [5, 2], [7, 1]]
Code #4: Using set and list comprehension
You can use a set to eliminate duplicates in the input list and a list comprehension to count the occurrence of each element.
# Python program to add the occurrence # of each number as sublists def count_occur(l):
unique_elements = set (l)
return [[elem, l.count(elem)] for elem in unique_elements]
# Driver code l1 = [ 3 , 5 , 7 , 2 , 3 , 5 , 9.1 ]
print (count_occur(l1))
|
[[2, 1], [3, 2], [5, 2], [7, 1], [9.1, 1]]
The time complexity of this approach is O(n^2) because it uses two nested loops. The outer loop iterates over the elements of the list, and the inner loop counts the number of occurrences of each element. The space complexity is O(n) because it creates a new list with the same number of elements as the input list.