如何将嵌套列表中的所有字符串数值转换为整数?
问题分析
你的核心问题是没注意到values是二维列表——每个元素都是包含字符串成绩的子列表(比如['100', '90', '80']),而int()函数只能转换单个字符串/数字,直接对整个子列表调用int()必然报错。
先看你两种方法的问题:
- 方法一:语法错误,列表推导式需要用
[]包裹,而且x是子列表,int(x)无法将列表转为整数 - 方法二:
map(int, values)会把每个子列表传给int(),同样因为int()不接受列表类型参数而报错
正确解决方法
方法1:嵌套列表推导式(最直观)
遍历values中的每个子列表,再逐个转换子列表里的字符串为整数:
int_values = [[int(score) for score in sublist] for sublist in values]
方法2:嵌套map函数
用两层map,内层处理子列表的元素转换,外层处理每个子列表:
int_values = list(map(lambda sublist: list(map(int, sublist)), values))
方法3:普通循环(适合新手理解)
int_values = [] for sublist in values: temp = [] for score in sublist: temp.append(int(score)) int_values.append(temp)
测试输出
运行上述任意一种方法后,打印int_values会得到:
[[100, 90, 80], [88, 99, 111], [45, 56, 67], [59, 61, 67], [73, 79, 83], [89, 97, 101]]
内容的提问来源于stack exchange,提问作者stowe9616
相关产品推荐
相关产品推荐

