в двухмерном массиве. Решил, но среди решений потом нашел такое, которое вызвало вопросы,
1. Итак. Есть двухмерный массив А:
A = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]
Хочу его перенести в set, чтобы остались только уникальные элементы. Делаю генератор, он же list comprehension, который перебирает элементы:
B = [[i for i in row] for row in A]
Как он работает, мне очень понятно:
в row записывается первая строка массива,
потом в i каждый элемент этой строки
Перевожу его в set:
B = set([[i for i in row] for row in A])
И справедливо получаю ошибку, ведь список нельзя передать в set
Но в решениях увидел следующее:
B = set([i for x in A for i in x])
И вот это уже работает. Собственно вопрос - как в этом случае работает генератор?
Вот эта конструкция i for x, которая дважды, вообще непонятна, как работает
set(itertools.chain(*A))
Не, решить-то решил Мне непонятна запись такая: [i for x in A for i in x] i for x и потом еще раз i for x
ну у Гвидо было свое представление о прекрасном, надо теперь принять это. Даже тернарник необычный по синтаксису. А по сабжу https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists
Чуть позже гляну, спасибо
Сначала i for x, потом for i in x
Ааа Взгляд замылился и вообще не так читал Уже что-то начинает проясняться Спасибо
То, что нужно, спасибо!
Обсуждают сегодня