TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #17 · 14 јан.

Допустим, есть некий массив a = [1, 2, 3] Как мы переберём все элементы? Это очевидно. for x in a: print(x) Как это сделать с помощью генератора списка (list comprehension)? r = [x for x in a] Добавим еще один массив b = 'abc' Теперь нам нужно перебрать все возможные сочетания из этих двух списков. Тоже не проблема: for x in a: for y in b: print(x, y) Можно ли такой алгоритм повторить с помощью генератора списка? На самом деле можно >>> [[x, y] for x in a for y in b] [[1, 'a'], [1, 'b'], [1, 'c'], [2, 'a'], ...] А если добавить еще один список? >>> c = ('yes', 'no', 'maybe') >>> r = [[x, y, z] for x in a for y in b for z in c] [[1, 'a', 'yes'], [1, 'a', 'no'], [1, 'a', 'maybe'], ...] Получаем список списков, в которых есть все варианты комбинаций по 3 элемента. В следующем коде круглыми скобками показаны части разных итераций, чтобы было понятно чо во что входит. Код не для исполнения! [( ( ([x, y, z] for x in a) for y in b) for z in c)] Генераторы списков это круто, но когда используются без фанатизма! Всегда помните: Простое лучше чем сложное (Simple is better than complex). И на последок пример: vectors = [[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[10, 11, 12], [13, 14, 15]]] print([digit for part in vectors for elem in part for digit in elem]) Попробуйте понять что там происходит и что распечатает этот код 😭😵🤪 Это хороший пример того, как не стоит усложнять читаемость кода. PS. Да, "генераторы" в Python это другая сущность, но как-то иначе удачно перевести comprehension не получается. Ну не называть же их "пониматоры" списков) PPS. Для получения множества комбинаций лучше используйте itertools.combinations #tricks

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #tricks

当前筛选 #tricks清除筛选
sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags