В качестве альтернативы списковых, вы можете попробовать map
:
>>> map(lambda x: [x], l)
[[1.0], [2.0], [3.0]]
Это дает желаемый результат, применяя lambda
(здесь, взяв объект и помещая его в список) каждому элементу l
в свою очередь.
В Python 3 map
возвращает итератор, поэтому используйте list(map(lambda x: [x], l))
, чтобы получить список.
Использование map
примерно в два раза медленнее списка понимания для небольших списков floats
, потому что построение функции lambda
влечет за собой небольшие накладные расходы:
>>> %timeit [[x] for x in l]
1000000 loops, best of 3: 594 ns per loop
>>> %timeit map(lambda x: [x], l)
1000000 loops, best of 3: 1.25 us per loop
Для более длинных списков, временной промежуток между двумя запусками чтобы закрыть, хотя понимание списка остается preferred option in the Python community.
* Интересно *? Кажется совершенно очевидным, почему .. См. Http://stackoverflow.com/questions/1247486/python-list-comprehension-vs-map BTW, мне нравится 'map' more;) –
Спасибо, что указали это - d означало слово * интересно * означать «стоит отметить», а не «таинственно» ... Я уточню свой ответ с лучшим выбором слова и объясню причину, по которой :-) –
Если вы узнаете способ не используйте 'lambda' здесь, тогда' map' будет быстрее! –