在子列表上调用int()函数?

时间:2013-08-02 23:57:33

标签: python python-3.x

我有一个列表列表,我想调用函数int()来查看子列表中的所有元素是否都是整数。具体来说,我想在第一个子列表上调用int()。我有一个类似[["a","1","2","3"],["1","2","3","4"]]的列表。如果子列表中的第一个元素不是数字,那么我将不返回任何内容。但是,如果是,那么我将报告子列表无效。我的代码如下:

new_list = [int(i) for i in l]
print(new_list)

这给了我TypeError: int() argument must be a string or a number, not 'list'

2 个答案:

答案 0 :(得分:2)

在您当前的代码中i指的是列表中的每个列表对象,因此错误通知您int()没有list ...您需要访问该列表的第一个元素,例如:i[0] ...

您可以在try / except中包装int转换,然后捕获并打印错误,例如:

for row in your_list:
    try:
        int(row[0])
    except ValueError as e:
        print('Invalid:', e)

您也可以使用(不使用try / except):

for row in your_list:
    if row[0].isdigit():
        print('Invalid:', row)

答案 1 :(得分:0)

您收到此类型错误,因为列表中有两个列表。所以你需要在列表理解中增加for