2011-06-21 82 views

回答

42
text = "42 0" 
nums = [int(n) for n in text.split()] 
+1

INT(n通常看起來比使用列表理解吸塵器)可能會引發ValueError,如果它不工作的方式 – Kopfgeldjaeger

9
l = (int(x) for x in s.split()) 

如果你確信總會有兩個整數,你也可以這樣做:

a,b = (int(x) for x in s.split()) 

,或者如果你打算修改後陣

l = [int(x) for x in s.split()] 
4

當然你可以調用split,但它會返回字符串,而不是整數。不要

>>> x, y = "42 0".split() 
>>> [int(x), int(y)] 
[42, 0] 

[int(x) for x in "42 0".split()] 
7

這應該工作:

[ int(x) for x in "40 1".split(" ") ] 
2

其他的答案已經表明,你可以用split()得到的值成list。如果你問了Python的arrays,這裏是一個解決方案:

import array 
s = '42 0' 
a = array.array('i') 
for n in s.split(): 
    a.append(int(n)) 

編輯:更簡潔的解決方案:

import array 
s = '42 0' 
a = array.array('i', (int(t) for t in s.split())) 
65

6的答案是遠遠不夠的爲OP可以很容易地回答自己一個問題通過測試interpreter

>>> "42 0".split() # or .split(" ") 
['42', '0'] 

答:是的。

,但它並沒有被明確指出,split方法默認情況下分裂的空白(空格,製表,carriage returnnewline),如果你不提供一個參數給它。

>>> " \r 42\n\r \t\n \r0\n\r\n".split() 
['42', '0'] 

此外,使用map當你想iterables的項目轉換爲內置插件一樣intfloatstr等:

>>> map(int, "42 0".split()) 
[42, 0] 
+4

+1的地圖,並沒有傳遞任何東西分裂() –

+0

這個答案的前半部分是厚臉皮,但沒有解決實際問題。提問者想知道他是否可以使用split *而將其轉換爲int *。下半部分關於地圖,看起來很酷且很有用。 – Starman

相關問題