Задать вопрос

Как в питоне распарсить двумерный циклично пополняемый список на отдельные элементы?

Например такой список
list = [[0, 0, 0], [30, 15, 25], [20, 5, 15], [10, -5, 5], [0, -15, -5]]... и он пополняется циклично

Когда у меня будет совпадение по составу блока (но не по последовательности), например
[[30, 15, 25], ...........[15,25,30]....] мне нужно его зафиксировать.
Как это можно сделать?
После их получения нужно иметь возможность сравнить все числа с учетом их порядка по
условию X(n)>=X(ne1)
  • Вопрос задан
  • 208 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 3
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Не совсем понятно что вам надо, но распарсить двумерный список на отдельные элементы можно так:
arr = [[0, 0, 0], [30, 15, 25], [20, 5, 15], [10, -5, 5], [0, -15, -5]]
sum(arr, [])


[0, 0, 0, 30, 15, 25, 20, 5, 15, 10, -5, 5, 0, -15, -5]
Ответ написан
tsarevfs
@tsarevfs
C++ developer
Для сравнения по составу блока отсортируйте его или используйте set:
>>> set([1, 4, 3]) == set([4, 3, 1])
True

UPD: Как верно подметил Umpiro set выкинет повторяющиеся элементы. Так что если вы считаете [1, 2, 1] и [1, 2] равными по составу, то используйте set. Если нет, то sort.
Ответ написан
ShashkovS
@ShashkovS
list = [[0, 0, 0], [30, 15, 25], [20, 5, 15], [10, -5, 5], [0, -15, -5], [15,25,30]]
stack = []
set_to_index = {}
for i, trio in enumerate(list):
    cur_set = frozenset(trio)
    if cur_set in set_to_index:
        print(f'found! l[{i}] = l[{set_to_index[cur_set]}] = {trio}')
    else:
        stack.append(trio)
        set_to_index[cur_set] = i


frozenset'ы можно использовать как ключи словаря, чтобы быстро проверять, встречалось ли уже такое множество.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽