Как посчитать разные элементы в списке списков? - PullRequest
1 голос
/ 27 января 2020

Я бы хотел посчитать количество уникальных списков внутри списка списков. Например,

>>>list1 = [[1,2,3],[1,2,3],[1,2,2],[1,2,2]]

>>>how_many_different_lists(list1)

>>>2 #They are [1,2,3] and [1,2,2]

Как я могу сделать функцию how_many_different_lists?

Ответы [ 3 ]

1 голос
/ 30 января 2020

Если вам просто нужно знать, сколько существует разных списков, вы можете просто сделать:

def how_many_different_lists(lists):
    s = set(str(list_) for list_ in lists)
    return len(s)

Вы можете вызвать эту функцию следующим образом:

>>> list1 = [[1,2,3],[1,2,3],[1,2,2],[1,2,2]]
>>> how_many_different_lists(list1)
2
1 голос
/ 27 января 2020

Вот рабочий код:

from copy import deepcopy

def how_much_dif_l(arg):
    arg_list=deepcopy(arg)
    i=0
    length=len(arg_list)
    while i<length:
        a = arg_list[i]
        if arg_list.count(a)>1:
            length-=1
            arg_list.remove(a)
        else: 
            i+=1


    return len(arg_list)

list1= [[1,2,3],[1,2,3],[1,2,2],[1,2,2]]
print(how_much_dif_l(list1))
0 голосов
/ 27 января 2020
lis = [[1, 2, 3], [1, 2, 3], [1, 2, 2], [1, 2, 2]]
import itertools
lis.sort()
print(list(lis for lis,_ in itertools.groupby(lis)))

Вышеприведенный код выводит

[[1, 2, 2], [1, 2, 3]]

Вы также можете сделать

l = []
for i in lis:
    if i not in l:
        l.append(i)

Или

l = [lis[i] for i in range(len(lis)) if i == 0 or lis[i] != lis[i-1]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...