"42 0"
たとえば、文字列があり、2 つの整数の配列を取得する必要があります。.split
スペースで a を実行できますか?
この問題に対する明白なアプローチは、単純なタスクの一般的な組み合わせです。
- 文字列を単語のリストに分割するにはどうすればよいですか?
- 文字列を float または int に解析するにはどうすればよいですか?
- 繰り返し計算の結果をリストや辞書などに収集するにはどうすればよいでしょうか (または各要素を変更したリストのコピーを作成するにはどうすればよいですか)?
ただし、正確な要件に応じて、他の方法で対処できます。場合によっては、分割ステップだけで十分な場合があります。ネイティブ Python 以外の異なる出力を生成するには、ここでのいくつかの回答に示されている他のアプローチがあります。list
たとえば、標準ライブラリarray.array
や Numpy 配列を使用するなどです。
あるいは、この問題は次のような特別なケースとして捉えることもできる。Python で文字列から数字を抽出するにはどうすればいいですか?。
ベストアンサー1
使用str.split()
:
>>> "42 0".split() # or .split(" ")
['42', '0']
この場合は同一ですstr.split(" ")
が、行に複数のスペースがある場合は動作が異なります。また、.split()
スペースだけでなくすべての空白で分割されます。
反復可能オブジェクトの項目を、、などmap
の組み込み関数に変換する場合、通常はリスト内包表記を使用するよりも を使用する方がきれいに見えます。Python 2では次のようになります。int
float
str
>>> map(int, "42 0".split())
[42, 0]
Python 3 では、map
遅延オブジェクトを返します。これをリストにするには、次のようにしますlist()
。
>>> map(int, "42 0".split())
<map object at 0x7f92e07f8940>
>>> list(map(int, "42 0".split()))
[42, 0]