Как читать вслух советы Python List?
Мой вопрос о читаемости Python List Consrehension. Когда я сталкиваюсь с кодом с комплексным/вложенным пониманием списка, я считаю, что мне нужно перечитать их несколько раз, чтобы понять намерение.
Есть ли интуитивный способ читать вслух список списков? Похоже, что я должен начать "чтение" с середины, а затем прочитать условия if (если они есть) и прочитать последнее выражение .
Вот как я прочитал бы следующую строку кода вслух, чтобы понять это:
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
"Для каждого элемента в List x и каждого элемента в List y, если два элемента не совпадают, создать список кортежей."
Два примера, с которыми я борюсь:
Как бы вы вслух прочитали следующие справки List?
Любые предложения или указатели на способы чтения общедоступных списков, такие, что намерение становится яснее, очень ценятся.
Ответы
Ответ 1
Я обычно разворачиваю это в своем уме в цикл генерации, поэтому, например,
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
- это понимание списка для генератора
for x in [1,2,3]:
for y in [3,1,4]:
if x != y:
yield (x, y)
Пример # 1
[x for b in a for x in b]
- это понимание для
for b in a:
for x in b:
yield x
Пример результата для a = [[1,2,3],[4,5,6]]
: [1, 2, 3, 4, 5, 6]
Пример # 2
[[row[i] for row in matrix] for i in range(4)]
(обратите внимание, что внутреннее выражение - другое понимание!):
for i in range(4):
yield [row[i] for row in matrix]
который разворачивается
for i in range(4):
l = []
for row in matrix:
l.append(row[i])
yield l
Ответ 2
"Построить список X на основе Y и Z, для которых Q истинно."