Это «питонная» версия для отображения и фильтрации последовательностей, но они позволяют делать некоторые другие вещи, такие как выравнивание вложенного списка (фиксированного уровня), например:
[j for i in nested_list for j in i]
Еще одна вещь, которую вы не можете сделать с обычной картой и лямбда-выражением, - это структурное разложение итерирующих значений, например:
[(x%y)*z for x,y,z in list_with_triplets_of_ints]
конечно, есть обходные пути, такие как:
aux = lambda x,y,z: (x%y)*z
map(lambda t: aux(*t), list_with_triplets_of_ints)
но когда преобразование, которое вам нужно применить, уже определено, то обычно проще использовать карту, как в:
map(int, list_of_str_values)
вместо
[int(i) for i in list_of_str_values]