map без lambda функции
Имеется
N=3
st=list(map(lambda s: ",K%d" % s,range(1,N)))#,K1,K2,K3
N-больше 100. 3 для краткости. Как все это записать без lamda или с использованием format ?
Ответы (1 шт):
Буквально, с использованием format вместо lambda и форматирования через %:
N = 3
print(list(map(",K{}".format, range(1,N))))
# Вывод: [',K1', ',K2']
Если запятая нужна для разделения элементов (начальная запятая не нужна), лучше убрать ее из строки форматирования, и использовать join для сборки элементов в строку с указанием запятой в качестве разделителя:
print(",".join(map("K{}".format, range(1,N))))
# Вывод: K1,K2
Еще вариация на форматирование через процент (пользуемся тем, что ",K%d" % s эквивалентно вызову метода __mod__: ",K%d".__mod__(s))
print(list(map(",K%d".__mod__, range(1,N))))
Но в целом, сейчас (при наличии в Python format и f-строк, т.е. начиная с Python 3.6) уже нет особого смысла вообще использовать процент для форматирования. Да код с использованием функций с двойным подчеркиванием напрямую выглядит не очень хорошо.