Если у меня есть список, как мне создать список списков дубликатов? Например, если у меня есть списоксписок дубликатов на python
L = [1,2,1,3,4,2,1,4]
Я хочу выход быть
L1 = [[1,1,1], [2,2], [3], [4,4]]
Если у меня есть список, как мне создать список списков дубликатов? Например, если у меня есть списоксписок дубликатов на python
L = [1,2,1,3,4,2,1,4]
Я хочу выход быть
L1 = [[1,1,1], [2,2], [3], [4,4]]
Там должно быть около сотни способов сделать это. Вот он. Если вы хотите больше, так как это действительно вопрос Python, добавьте тег Python к вашему вопросу.
>>> L = [1,2,1,3,4,2,1,4]
>>> from collections import Counter
>>> counts = Counter(L)
>>> counts
Counter({1: 3, 2: 2, 4: 2, 3: 1})
>>> L1 = [ [ _ ]*counts[_] for _ in counts.keys() ]
>>> L1
[[1, 1, 1], [2, 2], [3], [4, 4]]
Вариант ответа @ Bill_Bell.
>>> L = [1, 2, 1, 3, 4, 2, 1, 4]
>>> from collections import Counter
>>> counts = Counter(L)
>>> counts
Counter({1: 3, 2: 2, 4: 2, 3: 1})
>>> L2 = [[a]*b for (a,b) in counts.items()]
>>> L2
[[1, 1, 1], [2, 2], [3], [4, 4]]
В качестве альтернативы collections.Counter
ответов, вы можете использовать itertools.groupby
:
import itertools
L = [1,2,1,3,4,2,1,4]
grouped = [list(group) for key, group in itertools.groupby(sorted(L))]
print(grouped) # -> [[1, 1, 1], [2, 2], [3], [4, 4]]
Гораздо лучший ответ! –
Великий ответ, я нашел список ваш комп немного трудно читать с форматированием, так что, может быть отформатирован, как это поможет OP 'L1 = [[key] * подсчитывает [ключ] для ключа в counts.keys()]' – flybonzai
@flybonzai: Я не знаю! Я все для альтернативы, хотя. –