【问题标题】:Changed Nested list items to integer format将嵌套列表项更改为整数格式
【发布时间】:2018-03-06 05:50:34
【问题描述】:

如何过滤或删除号码末尾的.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']]

【问题讨论】:

  • 您可以遍历循环并可以转换为 int => int(float('17001.0'))
  • 子字符串、正则表达式、双重转换。字符串操作测试,如果它是一个点。您要么不知道如何对列表进行基本操作,要么您不想拥有最有效的解决方案。在这两种情况下,您都应该尝试edit。如果不对其进行全部测试,您将无法找到“最佳”,那么您为什么不对您想到的每个有效解决方案进行基准测试。

标签: python regex list nested


【解决方案1】:

如果您想要 listinteger 元素,那么这可能会对您有所帮助:

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]

【讨论】:

  • 这与我发布的内容有何不同?
  • @MarkWeston 我想这是另一种简单的方法。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    我尝试将它们转换为整数字节列表不低于此

    这是完全错误的:

    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]
    

    【讨论】:

      猜你喜欢
      • 2012-02-12
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      相关资源
      最近更新 更多