Всем привет. Есть такая строка кода: print(*map(lambda x: ''.join(x), m), sep='\n')
Я не понимаю что делает знак умножения перед map и не могу понять что делает лямбда-функция. Откуда она берёт x?
map и lambda - сокращенная запись функции. Что это значит:
Береться список m, потом для каждого его элемента применяется фукция lambda x: ''.join(x)(объединяет в строку все элементы). А * - распаковует список, передавая отдельные аргументы.
Спасибо, но результат функции я вижу. Я хочу понять как он формируется в этой строке. Мне непонятно назначение оператора "*" и вот этого куска ''.join(x). Что передаётся в качестве х?
In [3]: a, b = [1, 2]
In [4]: a
Out[4]: 1
In [5]: b
Out[5]: 2
Функция print() принимает переменное количество аргументов. В результате распаковка итератора его элементы становятся аргументами функции
In [6]: print(1, 2)
1 2
In [7]: print(*[1, 2])
1 2
Функция map() первым аргументом принимает функцию, которую вызывает для каждого элемента второго аргумента. То есть при каждом вызове lambda x: ... аргумент x будет равен одному из элементов m. А метод join() объединяет элементы последовательности.