Генератор списка списков python
У меня есть код который генерирует список списков
n = [[(i/j) for j in range (1,5)] for i in range (1,5)]
Вывод
[[1.0, 0,5, 0.33333333333, 0,25],
[2.0, 1.0, 0.66666666666, 0.5],
[3.0, 1.5, 1.0, 0.75],
[4.0, 2.0, 1.33333333333, 1.0]]
Вопрос 1) как обратиться к списку списков с помощью генератора 2) как итерировать этот список списков с помощью генератора, чтобы значения лежащие в пределах от 0.5 до 2.5 оставались без изменений, а остальные изменили знак на минус
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
С помощью генератора (list comprehension) вы создали исходный список. А менять с помощью генератора ничего не получится по определению (логично же, да?). Поэтому, делаете еще один list comprehension:
n = [[(i/j) for j in range (1,5)] for i in range (1,5)]
[[1.0, 0.5, 0.3333333333333333, 0.25],
[2.0, 1.0, 0.6666666666666666, 0.5],
[3.0, 1.5, 1.0, 0.75],
[4.0, 2.0, 1.3333333333333333, 1.0]]
n = [[x if (x > 0.5 and x < 2.5) else x*-1 for x in y] for y in n]
[[1.0, -0.5, -0.3333333333333333, -0.25],
[2.0, 1.0, 0.6666666666666666, -0.5],
[-3.0, 1.5, 1.0, 0.75],
[-4.0, 2.0, 1.3333333333333333, 1.0]]