Python:列出单个数字的整数?

时间:2009-12-16 14:11:52

标签: python list

如果注册,请说我有几个列表:

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 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分: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 :(得分:4)

>>> int(''.join(j for i in x for j in i))
4850775602376340

答案 3 :(得分: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))

答案 4 :(得分:1)

>>> x = [['48', '5', '0'], ['77', '56', '0'], ['23', '76', '34', '0']]
>>> int(''.join([''.join(i) for i in x ] ))
4850775602376340

答案 5 :(得分:1)

已经有足够好的答案......只是想添加无限嵌套的处理:

def flatten(obj):
    if not isinstance(obj, list):
        return obj
    else:
        return ''.join([flatten(x) for x in obj])

>>> x = [['48', '5', '0'], ['77', '56', '0'], ['23', '76', '34', '0']]
>>> flatten(x)
'4850775602376340'

>>> x = [['48', '5', '0'], ['77', '56', '0'], [['23','123'], '76', '34', '0']]
>>> flatten(x)
'4850775602312376340'

答案 6 :(得分:1)

简单地说:

  1. 展平列表

    [e for e in (itertools.chain(*x))]
    
  2. 删除否定号

    e.replace('-','')
    
  3. 将列表中的数字加入字符串并将其转换为数字

    int(''.join(x))
    
  4. 将它们放在一起

    x2 = int(''.join([e.replace('-','') for e in (itertools.chain(*x))]))