Python:将列表中的整数合并为一个数字?

1 投票
7 回答
2041 浏览
提问于 2025-04-15 17:05

假设我有几个整数的列表:

x =  [['48', '5', '0'], ['77', '56', '0'],
['23', '76', '34', '0']]

我想把这个列表转换成一个单一的数字,但这个数字的类型仍然是整数,也就是说:

4850775602376340

我一直在用这段代码来完成这个过程:

num = int(''.join(map(str,x)))

但是我总是遇到值错误。

另外,如果我的列表里有负整数,我该如何把它们转换成绝对值?然后再转换成一个单一的数字呢?

x2 = [['48', '-5', '0'], ['77', '56', '0'], ['23', '76', '-34', '0']]

x2 = 4850775602376340

提前谢谢你。

7 个回答

6

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们需要将它们转换成程序可以使用的格式。

比如说,如果我们从一个网页上获取了一些信息,这些信息可能是以文本的形式存在的。我们需要把这些文本解析成程序能理解的结构,比如列表或者字典。这样,程序才能更方便地使用这些数据。

在这个过程中,我们可能会用到一些工具或者库,这些工具可以帮助我们更轻松地完成数据的转换和处理。使用这些工具,就像是用一个强大的助手来帮我们完成繁琐的工作,让我们可以把精力集中在更重要的事情上。

总之,数据处理是编程中一个非常重要的部分,掌握了这项技能,我们就能更好地与各种数据打交道,让我们的程序变得更加智能和高效。

>>> int(''.join(reduce(lambda a, b: a + b, x)))
4850775602376340
6

我会使用 itertools.chain.from_iterable 来实现这个功能(这个在 Python 2.6 版本中新增的)

示例代码:

import itertools
x = [['48', '5', '0'], ['77', '56', '0'], ['23', '76', '34', '0']]
print int(''.join(itertools.chain.from_iterable(x)))
2

这是一种列表的列表,也就是说里面的每个元素又是一个列表。

num = int(''.join(''.join(l) for l in lists))

或者说

def flatten( nested ):
    for inner in nested:
        for x in inner:
            yield x

num = ''.join(flatten(lists))

撰写回答