2016-08-26 73 views
3

我想將['1','2','3','4']轉換爲[1,2,3,4] 我想將此轉換置於原地。可以做到嗎?如果不是,最佳的解決方案是什麼。列表轉換 - inplace

+0

它有多大? '''lyst [1] = int('1')'''將1分配給列表的索引1。 ['''enumerate'''](https://docs.python.org/3/library/functions.html#enumerate)應該幫助 – wwii

+0

約100個數字在數組 – Aman

+0

它是該死的容易!我的錯! – Aman

回答

1

你可以用列表理解這樣做:

l = [int(item) for item in l] 
+2

創建一個新列表。 –

0

這應該是相當的原地?

In [31]: l = ['1','2','3','4'] 

In [32]: for i in range(len(l)): 
    ....:  l[i] = int(l[i]) 
    ....:  

In [33]: l 
Out[33]: [1, 2, 3, 4] 

或者,你可以通過使用enumerate這需要一個迭代(如list)做到這一點,從開始到結束返回index和相應的值:

In [84]: l = ['1','2','3','4'] 

In [85]: for idx, val in enumerate(l): 
    ....:  l[idx] = int(val) 
    ....:  

In [86]: l 
Out[86]: [1, 2, 3, 4] 
+0

我在思考幾分鐘後做了同樣的事情。謝謝回覆! – Aman

+0

你應該爲此使用'enumerate'。它完全符合用例*。 –

0

只要整個陣列適合內存,你應該可以通過它,取代每個項目,你去:

# bigarray is ['1','2','3','4',...]; 

# loop through bigarray using index i 
for i in range(len(bigarray)): 
    # coerce bigarray[i] to int in place 
    bigarray[i] = int(bigarray[i]) 

# bigarray is [1,2,3,4,...]; 

祝你好運!

2

我認爲這是更好地使用map這類任務。哪個創建迭代器,什麼意思是更高效的內存。

l = list(map(int, l)) 
# here I convert it to list, but usually you would just iterate over it 
# so you can just do 
for item in map(int, l): 
    ...