2017-09-25 44 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])