Dada una lista de números, la tarea es contar la ocurrencia de cada elemento y agregar como sublistas.
Ejemplos:
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]]
Nota: El formato de la lista de salida 2d es [[‘item1’, ‘count1’], [‘item2’, ‘count2’], …, [‘itemN’, ‘countN’]].
Código #1: Usando el método count()
# 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))
Producción:
[[3, 2], [5, 2], [7, 1], [2, 1], [9.1, 1]]
Código #2: Usar el método de bucle
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))
Producción:
[[3, 2], [5, 2], [7, 1], [2, 1], [9.1, 1]]
Código #3: Usando el método counter()
# 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))
Producción:
[[2, 1], [3, 2], [9.1, 1], [5, 2], [7, 1]]
Publicación traducida automáticamente
Artículo escrito por vivekchaudhary90 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA