如果注册,请说我有几个列表:
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
提前致谢。
答案 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)
简单地说:
展平列表
[e for e in (itertools.chain(*x))]
删除否定号
e.replace('-','')
将列表中的数字加入字符串并将其转换为数字
int(''.join(x))
将它们放在一起
x2 = int(''.join([e.replace('-','') for e in (itertools.chain(*x))]))