6

我需要将列表列表转换为整数列表。

从:

L1 = [[1, 2, 3, 4], [3, 7, 1, 7], [0, 5, 6, 7], [9, 4, 5, 6]]

至:

L2 = [1234, 3717, 0567, 9456]

如何让python识别以0开头的整数?喜欢这个案子L2[2]

另一个问题是,如何检查列表中的项目是否已订购?

A = [1, 2, 6, 9] ---->True

除了这个:

A == sorted(A)

你们很快。谢谢!

4

4 回答 4

5

第一个问题可以通过

L = [int("".join([str(y) for y in x])) for x in L]

不幸的是,整数不以 0 开头。没有办法做到这一点。

检查是否A == sorted(A)是一个非常好的方法来做到这一点。

于 2013-08-30T03:58:53.567 回答
4
L2 = [reduce(lambda x,y : 10 * x + y, l) for l in L1]

如果您想要一个不通过字符串的解决方案。

于 2013-08-30T04:01:42.447 回答
1

对于问题 1,也许 Python 3 可以转换,但是普通的 .join 在 Python 2 中给了我一个 TypeError 。试试:

["".join(str(d) for d in x) for x in L]

...对于字符串表示,或

[int("".join(str(d) for d in x)) for x in L]

(字符串表示是保留前导零的唯一方法,除了格式化输出......然后这只是到输出文件/字符串的字符串转换。)

对于问题 2:all(A[i-1] < A[i] for i in range(1, len(A)))

>>> A = [1, 2, 6, 9]
>>> all(A[i-1] < A[i] for i in range(1, len(A)))
True
于 2013-08-30T04:05:40.550 回答
0

你可以做:

L2 = [ int("1" + "".join(str(l) for l in ll1)) for ll1 in L1 ]

保持零并获得:

[11234, 13717, 10567, 19456]

但是你需要摆脱最左边1的s。

于 2013-08-30T04:25:50.723 回答