これはだまされているに違いありませんが、この質問の既存のインスタンスが見つかりませんでした...
Pythonでイテラブルを配列に変換する最も簡単な方法は何ですか(理想的には、何もインポートせずに)?
注: 理想的には、入力が配列の場合、それを複製すべきではありません (ただし、これは必須ではありません)。
配列の意味によって異なります。リストなどではなく、本当に配列を意味する場合は、配列が同じ (基本) 型の要素のコンテナーであることを認識する必要があります ( http://docs.python.org/library/array.htmlを参照)。すべてのイテラブルを配列に変換できるわけではありません。リストを意味する場合は、次のことを試してください。
l = list(iterable)
「配列」がリストを意味する場合は、次のようにします。
list(foo)
どう[e for e in iterable]
ですか?
そして、追加の要件を満たすには:
iterable if isinstance(iterable,list) else [e for e in iterable]
list関数は iterable を引数として取り、リストを返します。次に例を示します。
>>> rng = xrange(10)
>>> rng
xrange(10)
>>> list(rng)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
これは、リストのリストも作成しません。
>>> list(list(rng))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
基本的に、Python では配列とリストはほぼ同じものです。したがって、リスト内包表記がその仕事をします:
ary = [ i for i in yourthing ]