【问题标题】:List to int in python [duplicate]在python中列出int [重复]
【发布时间】:2020-05-24 23:45:25
【问题描述】:

我想知道在 python 中是否有一种将数字列表转换为整数的好方法。也就是说,如果我有mylist = [1, 5, 9],我想做类似int(mylist) 的操作来获得159 的输出。我假设输入列表只有数字,我想用它来创建一个数字。目前我拥有的最好的是:

mylist = [1, 5, 9]
num = 0
for i in range(len(mylist)):
    num += mylist[i] * 10 ** (len(mylist) - i - 1)

应该没问题,但感觉太明确了。有没有更整洁/更好的方法来做到这一点?

【问题讨论】:

  • num = int(''.join([str(item) for item in mylist]))

标签: python integer


【解决方案1】:

您可能需要重新考虑您的数据是如何进入该结构并修复它的。

但是你可以很容易地将它组合成一个字符串并在上面调用int()

int("".join(str(i) for i in mylist))

【讨论】:

    【解决方案2】:

    目前我能想到的最好的是:

    mylist = [1, 5, 9]
    num = 0
    for i in range(len(mylist)):
        num += mylist[i] * 10 ** (len(mylist) - i - 1)
    

    【讨论】:

    • 这不是和你的问题完全相同的代码吗?
    • @Chris 是的。我只是想,既然它完成了任务,我应该添加作为答案。
    【解决方案3】:

    试试这个:

    list = [1, 2, 3]
    string = ''
    for num in list:
        string = string + str(num)
    result = int(string)
    print(result)
    

    【讨论】:

      【解决方案4】:

      地图功能通常更快。我使用了 lambda,但您也可以创建自己的函数而不是 lambda。

      mylist = [1, 5, 9]
      N = len(mylist)
      sum(list(map(lambda x : x[0]*10**(N-x[1]-1),  enumerate(mylist))))
      

      【讨论】:

        【解决方案5】:

        使用functools.reduce:

        from functools import reduce
        
        assert reduce(lambda a, x: 10*a + x, [1,5,9]) == 159
        

        这是实现Horner's Method 的一种简短方式。

        【讨论】:

          猜你喜欢
          • 2021-09-13
          • 2013-05-07
          • 2022-01-15
          • 1970-01-01
          • 2015-03-07
          • 2015-05-11
          • 2014-03-15
          • 1970-01-01
          • 2014-04-03
          相关资源
          最近更新 更多