2012-01-20 134 views
2

我正在尋找python中的單行命令來將整數輸入轉換爲列表。 以下是情況。將單個整數輸入轉換爲Python中的列表

mylist=[] 
mylist=list(input('Enter the numbers: ')) 

如果我給一個以上的數字作爲輸入,上面的代碼行完美。例如1,2,3。但是當我只給出一位數字輸入時它會給出錯誤。例如:1。說它不能將整數轉換爲列表。 我不想運行循環詢問用戶輸入的每一個。所以我想要一個一行命令,它將工作於一個更多數字輸入由用戶給出用逗號分隔。

感謝你, -indiajoe

回答

3

我認爲,你可以做最簡單的事情是:

mylist = map(int, raw_input('Enter the numbers: ').split(',')) 

但是,使用列表理解幾乎是相同的。

+0

非常感謝。這應該做.. – indiajoe

3

您應該使用raw_input並轉換爲int與列表理解:

user_input = raw_input('Enter the numbers: ') 
my_list = [int(i) for i in user_input.split(',')] 

offical documentationraw_input讀取輸入線,將其轉換爲字符串(剝離結尾的換行符),並返回該結果。

+0

您也可以使用eval將您的字符串列表轉換爲int:mylist = map(eval,mylist) – SRC

+0

謝謝,但我試圖準確地避免這個循環。這種常見用途沒有任何一種班輪嗎?如果不是,我將繼續使用這種循環方法。 – indiajoe

+0

@SRC:在用戶輸入中使用eval是一種糟糕的做法!只有在需要**和必要的檢查時,你才應該這樣做。 –

1

inputeval()是您鍵入的內容。所以,當你輸入1,2,3時,結果是tuple;當你鍵入1時,結果是int。嘗試輸入1,而不是1。請注意,您的第一行(mylist=[])是不必要的。

+0

是的,在整數工作後鍵入一個逗號。例如:1,但看起來有點不整齊,要求用戶輸入額外的逗號。或者我將不得不添加一個try:除了:block來捕獲它並更正。 – indiajoe

+0

按照這種方法,這將工作: mylist = list(eval(raw_input('Enter the numbers:')+','))'。 (用'raw_input'和逗號做'eval')。 – Renato

相關問題