Уменьшить количество каждого значения из списка на некоторое значение Python - PullRequest
3 голосов
/ 05 июля 2019

Я странствую, есть ли способ уменьшить количество каждого значения в списке, уменьшив его счет на некоторое число (1,2,3..10 ...) или установить количество, деленное на некоторое число.Например:

list = ["one","one","three","three","four","three","four", "four"]

Результат в первом случае (уменьшить число на каждое значение 2):

["three", "four"]

Результат во втором случае (разделить на 2 -> это сложно, потому что3/2 - это 1,5, но, например, округлить число до 1):

["one", "three", "four"]

1 Ответ

3 голосов
/ 05 июля 2019

Вот один из подходов, использующий Counter:

from collections import Counter
from itertools import chain, repeat

l = ["one","one","three","three","four","three","four", "four"]

n = 2
c = Counter(l).items()
list(chain.from_iterable(repeat(k, v-n) for k,v in c))
# ['three', 'four']

Во втором случае мы можем взять деление на этаж на n=2:

list(chain.from_iterable(repeat(k, v//n) for k,v in c))
# ['one', 'three', 'four']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...