列表对象转换为整数

时间:2014-06-01 22:34:30

标签: python list object

我有一个清单:

nums=[[19],[5],[23],[6],[10]]. 

有没有办法将列表对象转换为“简单”对象?

那么[19]会变成实际的整数19吗?也许某种类型的铸造?

3 个答案:

答案 0 :(得分:5)

这可能是最明确的方法:

nums = [[19],[5],[23],[6],[10]]

ints = [i[0] for i in nums]

还有其他有益的方法可以做到。

从项目中解压缩工作(这表明每个项目中只有一个元素,如果有多个元素,则会给出解包错误):

unpacked_ints = [i for i, in nums]

或者可以从每个子列表中弹出(最后一个项目,将其从子列表中删除,如果您保留对子列表的引用,它将不再存在):

popped_ints = [i.pop() for i in nums]

或在功能上(operator.itemgetter返回部分函数,​​如lambda x: x[0]):

import operator
ints2 = list(map(operator.itemgetter(0), nums))
在Python2中

,不需要列表来实现:

import operator
ints3 = map(operator.itemgetter(0), nums)

编辑回应评论:

现在你的评论是你正在处理一个很大的迭代,可能不想在内存中实现整个事情。这仍然不会改变我建议你处理它的方式。我感觉你能够做到这一点:

for i in nums:
    my_process(i)

所以我建议你这样做:

for i in nums:
    my_process(i[0])

答案 1 :(得分:4)

另一种选择是压扁列表。

nums = [[19],[5],[23],[6],[10]]
nums = [num for numlist in nums for num in numlist]

或者,但只有当你想要激怒任何阅读你代码的人时:

n = [[19],[5],[23],[6],[10]]
n = [n for n in n for n in n]

答案 2 :(得分:1)

最简单的解决方案是stdlib:https://docs.python.org/2/library/itertools.html#itertools.chain.from_iterable

import itertools
nums=[[19],[5],[23],[6],[10]]
print list(itertools.chain.from_iterable(nums))
# [19, 5, 23, 6, 10]