我有一个列表列表,我想调用函数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'
。
答案 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
。