Как читать вслух Python List Comprehensions?

Мой вопрос касается читабельности Python List Comprehension. Когда я встречаю код со сложными/вложенными списками, я обнаруживаю, что мне приходится перечитывать их несколько раз, чтобы понять замысел.

Существует ли интуитивно понятный способ чтения вслух списковых вычислений? Кажется, что я должен начинать "чтение" с середины, затем читать if условия (если они есть), а expression читать последним.

Вот как бы я прочитал вслух следующую строку кода, чтобы понять ее:

[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

"Для каждого элемента в списке x и каждого элемента в списке y, если эти два элемента не одинаковы, создайте список кортежей."

Два примера, с которыми я испытываю трудности: Как бы вы прочитали вслух следующие List Comprehensions?

  1. Из другого вопроса в Stack Overflow: [x for b in a for x in b]

  2. В документации Python есть такой пример: [[row[i] for row in matrix] for i in range(4)]

Любые предложения или указания на способы чтения вслух списков, чтобы замысел стал более ясным, будут приняты с благодарностью.

22
задан Ram Narasimhan 30 January 2012 в 09:30
поделиться