3]
expected_data = [(1,2,3), (2,3), (3,)]
есть у кого-нибудь идеи как получить expected_data из data?
суть в том, что нужно сгруппировать все элементы в листе без пересечения
Что-то много вариантов) лучше всего через подсчет, думаю. То есть Counter наверное. Другой момент, что они еще и упорядочены (или не обязательно?). А это тоже повод для оптимизаций)
без пересечения, всмысле без повторений?
допустим, что не упорядочны, привел пример, чтобы было наглядно. вот еще пример data = [1, 2, 3, 4, 4, 2, 1, 3, 5] expected_data = [(1, 2, 3, 4, 5), (2, 3, 4, 1)]
def func(arr): main_list = [] s = [] while arr != []: for i in arr: if i not in s: arr.remove(i) s.append(i) main_list.append(tuple(s)) s = [] return main_list
спасибо, но не совсем то, нужно минимально возможное кол-во массивов внутри. получается >[(1, 3, 4, 5), (2, 1), (4, 3), (2,)] нужно >[(1, 2, 3, 4, 5), (2, 3, 4, 1)]
понял в чем была ошибка def func(arr): main_list = [] s = [] while arr != []: for i in arr: if i not in s: s.append(i) for i in s: arr.remove(i) main_list.append(tuple(s)) s = [] return main_list
похоже то что нужно, спасибо!
Обсуждают сегодня