diplomatgmg
@diplomatgmg
Делаю что-то гениальное

Как правильно читать такой код?

a = [[1,2,3], [4,5,6]]

res = [x for i in a for x in i]

print(res) # [1, 2, 3, 4, 5, 6]

я не понимаю как правильно читать такой однострочный код для перевода двумерный массив в обычный. Реализовал этот код без list comprehension,
a = [[1,2,3], [4,5,6]]
res = []
for i in a:
    for x in i:
        res.append(x)
print(res) # [1, 2, 3, 4, 5, 6]

но в голове возникло только большее немонимание
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
@Jack444
a = [[1,2,3], [4,5,6]]
res = [(x, y) for i in a for x in i for y in i]
print(res)

Немного усложнил код чтобы понятней была логика чтения и написаний таких конструкций.
В начале всегда идёт объявление переменных, значения которых желаем получить, затем после каждого for объявляется новая переменная значение которой присваивается из итерируемых значений после in если название переменной == одной из изначально объявленных то значение добавится туда сразу если нет и переменная после for тоже итерируемая то по ней снова можно итерироватся
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rendleks
По сути это одно и тоже.
a = [[1,2,3], [4,5,6]]

res = [x for i in a for x in i] # массив двумерный, поэтому проходим по первому списку - это запись for i in a
# затем каждый элемент из из первого списка for x in i добавляем в res.  x - это элемент списка
# Проходим по второму списку, все элементы так же добавляем в res.

print(res) # [1, 2, 3, 4, 5, 6]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы