You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决TypeError:int()参数不能为list类型的Python代码修正问题

解决TypeError: int()参数类型错误的问题

问题背景

需要实现功能:传入文件名和列名列表,返回所有行中这些列的整数值组成的列表(整数顺序无关)。当前代码中指定行触发错误:

def extract_data(filename, column_names):
    with open(filename) as election:
        elects = [row for row in csv.DictReader(election)]
    results = ([row[cn].replace(",", "")
                for cn in column_names] for row in elects)
    results = [row for row in results if '' not in row]
    return list((results))


def extract_election_votes(filename, column_names):
    results = extract_data(filename, column_names)
    # 以下行触发错误
    return [int(vote) for vote in results] 

报错信息:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

问题分析

extract_data函数返回的是二维列表:外层列表的每个元素对应一行数据,是包含多个列字符串值的子列表。原代码直接遍历外层列表,把每个子列表(而非子列表里的字符串)传给int(),导致类型不匹配错误。

解决方案

根据需求(返回所有行中这些列的整数值组成的一维列表,顺序无关),需要嵌套遍历二维列表的每个元素,将其转为整数后合并,修改触发错误的行如下:

return [int(vote) for row in results for vote in row]

如果需要保留每行的结构(返回二维整数列表,每个子列表对应一行的列整数),则修改为:

return [[int(vote) for vote in row] for row in results]

完整修正代码

注意:原代码缺少csv模块导入,需要补上:

import csv

def extract_data(filename, column_names):
    with open(filename) as election:
        elects = [row for row in csv.DictReader(election)]
    results = ([row[cn].replace(",", "")
                for cn in column_names] for row in elects)
    results = [row for row in results if '' not in row]
    return results  # 简化list(results),因为results已经是列表类型

def extract_election_votes(filename, column_names):
    results = extract_data(filename, column_names)
    return [int(vote) for row in results for vote in row]

内容的提问来源于stack exchange,提问作者user19563024

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 08:48:21