Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 已将嵌套列表项更改为整数格式_Python_Regex_List_Nested - Fatal编程技术网

Python 已将嵌套列表项更改为整数格式

Python 已将嵌套列表项更改为整数格式,python,regex,list,nested,Python,Regex,List,Nested,如何筛选或删除号码末尾的.0?我尝试将它们转换为整数,但列表不允许这样。regex是我最好的选择吗?我不需要对这些数字做任何数学运算。我只需要删除结尾处的.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'], ['19

如何筛选或删除号码末尾的.0?我尝试将它们转换为整数,但列表不允许这样。regex是我最好的选择吗?我不需要对这些数字做任何数学运算。我只需要删除结尾处的.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']]
我试着用列表把它们转换成整数,别这样

这是完全错误的:

IntNums = []
for lst in Nums:
    IntLst = []
    for n in lst:
        IntLst.append(int(float(n)))
    IntNums.append(IntLst)
无法将字符串转换为整数,因为它们包含“.0”后缀,但可以先将它们转换为浮点数,然后再转换为整数

如果要就地转换列表,请使用索引进行迭代:

for i in range(len(Nums)):
    for j in range(len(Nums[i])):
        Nums[i][j] = int(float(Nums[i][j]))
您也可以使用列表:

Nums = [[int(float(n)) for n in lst] for lst in Nums]
如果希望列表包含整数元素,则这可能会帮助您:

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]

我相信这是最简单的方法:

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

您可以在循环中迭代,并将其转换为int as=>intfloat'17001.0'子字符串、正则表达式和双转换。字符串运算测试是否为点。您可能不知道如何在列表上执行基本操作,也可能不想找到最有效的解决方案。在这两种情况下,你都应该用你已经尝试过的东西。如果不进行测试,你就无法找到最好的解决方案,那么为什么不在脑海中标出每个可行的解决方案。这与我发布的有什么不同?@MarkWeston我认为这是另一种简单的方法。