2017-09-25 41 views
-3

如何在數字末尾過濾或刪除.0?我試圖將它們轉換爲整數,但列表不允許。正則表達式是我的最佳選擇?我不需要用數字做任何數學運算。我只需要在最後刪除.0。 所有幫助歡迎。將嵌套列表項目更改爲整數格式

Nums = [['17001.0', '17001.0'], ['17001.0', '11001.0'], ['17001.0', '18001.0'], ['17001.0', '19001.0'], 
    ['14001.0', '12001.0'], ['19001.0', '18001.0'], ['19001.0', '16001.0'], ['15001.0'], ['16001.0'], 
    ['18001.0'], ['19001.0'], ['18001.0'], ['22.0'], ['22.0'], ['22.0'], ['19001.0']] 
+0

您可以通過循環迭代並可以轉換爲int爲=> INT(浮動( '17001.0')) – Harsha

+1

子串,正則表達式,雙皈依。字符串操作測試如果它是一個點。您要麼不知道如何在列表上進行基本操作,要麼不想擁有最佳的有效解決方案。在這兩種情況下,你都應該使用你的嘗試。你不能在沒有全部測試的情況下找到「最好的」,那麼爲什麼你不要標記出你想到的每一個工作解決方案。 –

回答

0

我試圖把它們轉換成BYT名單整數不alow是

這是完全錯誤的:

IntNums = [] 
for lst in Nums: 
    IntLst = [] 
    for n in lst: 
     IntLst.append(int(float(n))) 
    IntNums.append(IntLst) 

,因爲它們含有你不能轉換成字符串整數'.0'後綴,但您可以先將它們轉換爲浮點數,然後再轉換爲整數。

如果你想在列表轉換到位,你重複使用索引:如果你想listinteger元素那麼這個

Nums = [[int(float(n)) for n in lst] for lst in Nums] 
2

for i in range(len(Nums)): 
    for j in range(len(Nums[i])): 
     Nums[i][j] = int(float(Nums[i][j])) 

你可以使用一個列表理解太可以幫助你:

Nums = [['17001.0', '17001.0'], ['17001.0', '11001.0'], ['17001.0', '18001.0']] 
a=[] 
for c in Nums: 
    if len(c)>1: 
     for d in c: 
      a.append(int(float(d))) 
    else: 
     a.append(int(float(c))) 

# a= [17001, 17001, 17001, 11001, 17001, 18001] 
+1

這與我發佈的內容有什麼不同? – MarkWeston

+0

@MarkWeston我認爲這是另一種簡單的方法。 – GeekSambhu

1

我相信這將是s implest方法:

nozeros = [] 
for i in Nums: 
    nozeros.append([int(j.split('.')[0]) for j in i])