どうやって作るの?
x = '1 2 3 45 87 65 6 8'
>>> foo(x)
[1,2,3,45,87,65,6,8]
私は完全に立ち往生しています、インデックスでそれを行うと、1桁以上の数字が壊れます。助けてください。
リスト内包表記を 。split() メソッドと組み合わせて使用できます。
_x = [int(i) for i in x.split()]
_
または、map
aswellを使用することもできます。
_x = list(map(int, x.split()))
_
整数が必要な場合、list
のint
を作成します。
または、単に文字列のリストに.split()
を使用します。
_x = x.split()
_
str
のリストを作成する場合
python stringをリストに変更するsplit()関数を提供するため、心配する必要はありません。
x='1 2 3 4 67 8 9'
x.split()
['1'、 '2'、 '3'、 '4'、 '67'、 '8']
または整数形式で出力したい場合は、マップ関数を使用できます
map(int ,x.split(' '))
[1、2、3、4、67、8]
上記のように、文字列の先頭または末尾にスペースを入力するか、アイテム間に複数の不均等なスペースで区切って入力すると、s.split( '')も空のアイテムを返します。
>>> s=' 1 2 3 4 67 8 9 '
>>> list(s.split(' '))
['', '1', '2', '', '3', '4', '67', '8', '9', '']
区切り文字を指定しないようにした方が良いです:
>>> list(s.split())
['1', '2', '3', '4', '67', '8', '9']
オプションの2番目の引数sepが存在しないかNoneの場合、単語は空白文字の任意の文字列(スペース、タブ、改行、リターン、フォームフィード)で区切られます。
スペースでのみ分割する場合は、空の文字列を簡単にフィルタリングできます。
>>> [item for item in s.split(' ') if item]
['1', '2', '3', '4', '67', '8', '9']
単純な行は...
print (map(int, x.split()))
誰かが私を賢く修正したように、python> = 3では、それは
print(list(map(int,x.split())))
また、以前のバージョンでもユーザーになる可能性があります。
明確な説明をするだけです。
文字列をリストに分割する文字列メソッドstr.split()
を使用できます。この方法の詳細については、こちらをご覧ください こちら 。
例:
def foo(x):
x = x.split() #x is now ['1','2','3','45', ..] the spaces are removed.
for i, v in enumerate(x): #Loop through the list
x[i] = int(v) #convert each element of v to an integer
これでうまくいくはずです!
>>> x
[1, 2, 3, 45, 87, 65, 6, 8]
入力に数字しかないと仮定すると、次のようになります。
_>>> x = '1 2 3 45 87 65 6 8'
>>> num_x = map(int, filter(None, x.split(' ')))
>>> num_x
[1 2 3 45 87 65 6 8]
_
これは、数字が複数のスペース文字で区切られている場合、または入力の前後にスペース文字がある場合に対処します。次のようなもの:
_>>> x = ' 1 2 3 4 '
>>> num_x = map(int, filter(None, x.split(' ')))
>>> num_x
[1, 2, 3, 4]
_
x.split(' ')
への入力を置き換えて、他の区切り文字タイプにも一致させることができます。 _,
_または_;
_など.