タイトルのような関数を,3系のPythonで作成しようとしています。
分かりにくいのですが,例えば,
Python
1foo('hoge') # return ['hoge'] 2foo(['hoge']) # return ['hoge'] 3foo(np.array('hoge')) # return ['hoge'] 4foo(('hoge', 'fuga')) # return ('hoge', 'fuga') or ['hoge', 'fuga'] 5foo(0) # return [0] 6foo(np.array([1, 2, 3])) # return [1, 2, 3] or np.array([1, 2, 3])
となるようなものです。
(tupleやnp.arrayはそのままでもいいし,listに強制的に変換されても構いません)
今のところ,そういったものが作れないわけではなく
Python
1convert_to_list = lambda x: np.array([x]).reshape(1, -1)[0].tolist()
で対処できてはいますが,分かりにくいし,numpyに依存してしまっています。
Python2.xであれば,strがiterを持たないので
Python
1convert_to_list = lambda x: x if hasattr(x, '__iter__') else [x]
という方法が使えたようですが,3系でもこれに似たような,分かりやすく綺麗な方法はないでしょうか?
よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/20 06:37