Ihr Code, weil in Python wie erwartet nicht verdreifachen arbeiten die *
Operator polymorph ist. Wenn also x
und n
Zahlen sind, gibt x*n
das Produkt beider Zahlen zurück, aber wenn einer der Operanden (z. B. n
) eine Ganzzahl und der andere eine Sequenz ist (.e. x
ist eine Liste, ein Tupel oder eine Zeichenfolge) der Ausdruck x*n
gibt die Sequenz zurück, die sich ergibt, wenn x
mit sich selbst n
mal verkettet wird. Beispiele:
>>> .1 * 2.5
0.25
>>> [1, 2] * 3
[1, 2, 1, 2, 1, 2]
>>> "beep" * 2
beepbeep
Um die erwartete zu erhalten führen Sie benötigen, um Ihre Liste zu glätten, bevor map()
Anwendung:
>>> your_list = [[1, 2], [3, 4]]
>>> flat_list = [item for sublist in your_list for item in sublist]
>>> flat_list
[1, 2, 3, 4]
>>> triples = map(lambda x: 3*x, flat_list)
>>> triples
[3, 6, 9, 12]
Eigentlich brauchen Sie nicht map()
und lambda
zu verwenden. Ich denke, mit einem One-Liner-Liste Verständnis würde mehr Python sein:
>>> triples = [3*item for sublist in your_list for item in sublist]
>>> triples
[3, 6, 9, 12]