2013-10-24 34 views
23

列表整數的字符串如何使類似更改用空格隔開來的INT

x = '1 2 3 45 87 65 6 8' 

>>> foo(x) 
[1,2,3,45,87,65,6,8] 

我完全被卡住,如果我通過指數超過1倍的數字做,那麼數字將被分解。請幫助。

+1

對downvoters:我認爲這個問題很好。雖然他沒有顯示代碼,但他顯示了他的努力:「我完全卡住了,如果我通過索引來做,那麼超過1位數的數字將被分解」 – aIKid

+0

是的,我同意alKid,他從問我現在面臨的更多問題。因爲有些人得到了降級的特權,並不意味着要減少所有的事情。 –

+0

我剛纔看了一下你的個人資料哈哈。如果你想再次提問,你可以製作一個新的配置文件,或增加你的聲望。我也一直處於這種狀況。 – aIKid

回答

26

您可以組合使用列表理解與.split()方法:

x = [int(i) for i in x.split()] 

或者您可以使用map藏漢:

x = map(int, x.split()) 

,如果你想這將創建一個的intlist整數。

或只使用.split()字符串列表:

x = x.split() 

如果你想創建的str

+0

+1爲轉換爲int –

+0

您需要的字符串'x = x.split()' –

0

名單只是做出了明確的解釋。

您可以使用字符串方法str.split()將字符串拆分爲一個列表。您可以詳細瞭解這種方法here

例子:

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] 
+0

這不是'enumerate'的工作方式......它將索引和給定索引處的值作爲元組返回。這個代碼將失敗* * int(i)'和'x.index(i)'。 – SethMMorton

+0

@SethMMorton對此非常抱歉。更新了我的答案。 – aIKid

+0

我的代碼不完整,我忘了提交。抱歉。 – aIKid

1

簡單的線條可以...

print (map(int, x.split())) 

彷彿有人明智地糾正說,在Python> = 3,應當成爲,

print(list(map(int,x.split()))) 

它也可以是用戶在早期版本中。

+5

請注意,在python3中,'map'返回一個* map對象*,所以你需要調用'list'來將它變成一個列表。 – SethMMorton

+0

感謝SethMMorton,我不知道它:) –

2

無需擔心,因爲python提供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 1,8]

2

s=' 1 2 3 4 67 8 9 '
如果在項目之間的字符串或多個空間的開始或結束一個空間上面,功能:
out = [item for item in s.split(' ')]
將返回空項:
['', '1', '2', '', '3', '4', '67', '8', '9', '']
可以篩選出來:
out = [item for item in filter(None, s.split(' '))]
輸出變爲:
['1', '2', '3', '4', '67', '8', '9']
與無爲第一個參過濾去除空元素。

+0

是的,但..如果你已經迭代的地圖是什麼?沒有'map':'int(i)for i in filter(None,s.split(''))]'或沒有列表理解:'map(int,filter(None,s.split ('')))' – Mikaelblomkvistsson

0

假設你只有在你輸入數字,你可以有類似以下內容:

>>> 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(' '),以配合其他類型的分隔符,以及例如,;