我需要将列表列表转换为整数列表。
从:
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)
你们很快。谢谢!
第一个问题可以通过
L = [int("".join([str(y) for y in x])) for x in L]
不幸的是,整数不以 0 开头。没有办法做到这一点。
检查是否A == sorted(A)
是一个非常好的方法来做到这一点。
L2 = [reduce(lambda x,y : 10 * x + y, l) for l in L1]
如果您想要一个不通过字符串的解决方案。
对于问题 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
你可以做:
L2 = [ int("1" + "".join(str(l) for l in ll1)) for ll1 in L1 ]
保持零并获得:
[11234, 13717, 10567, 19456]
但是你需要摆脱最左边1
的s。