Как я могу заставить эту функцию работать правильно независимо от итерации аргумента X и без каких-либо условий if/else?Обработка итерационных и неистребимых объектов.
Я бы предположил, что этот вопрос задавали/отвечали раньше, но я ничего не мог найти.
def do_something(X):
return map(lambda x: x ,X)
# Possible input:
do_something([1,2,3]) #-> [1,2,3]
do_something(1) # -> [1]
РЕДАКТИРОВАТЬ:
Я ожидаю скалярная аргумент, который будет рассматриваться как 1D, один элемент массива, например, 1 -> [1], поэтому возвращаемое значение всегда должно быть списком.
Numpy Решение:
Просто понял, что NumPy обеспечивает эту функциональность:
import numpy
def do_something(X):
return map(lambda x: x ,numpy.atleast_1d(X))
Так что теперь вопрос: "Есть ли способ добиться того же без импорта NumPy"?
Что вы ожидаете, произойдет в каждом случае? Если вторая версия возвращает обработанный элемент напрямую или список из одного элемента, например? Я предполагаю, что вы планируете что-то другое, кроме NOOP, которое вы сейчас используете? – jonrsharpe
Я добавил ответ на исходный вопрос – memecs
, если вы имеете дело со строками. они тоже повторяются (даже строки из 1 символа) – wim