为何列表元素无法从字符串转换为整数?代码调试求助
问题分析与解决
嘿,我完全懂你现在的疑惑!你在循环里把test转成了整数,但原列表里的元素还是字符串,核心原因是循环中的test只是原列表元素的一个副本,修改副本不会影响原列表本身。
咱们拆解下你的原代码:
list1=["-7","-7","-6"] for test in list1: test=int(test) # 这里只是把临时变量test转成了int,和原列表没关系 print( type( list1[0] ) )
当你用for test in list1遍历的时候,每次的test都是从列表里取出的字符串的拷贝,你把这个拷贝转成int后,原列表里的字符串元素根本没被改动,所以打印类型还是str。
两种修复方案
1. 通过索引修改原列表
直接操作列表的索引位置,把转换后的int赋值回去:
list1=["-7","-7","-6"] for i in range(len(list1)): list1[i] = int(list1[i]) # 直接修改列表对应索引的元素 print(type(list1[0])) # 现在会输出<class 'int'>
2. 生成新列表(更Pythonic的写法)
用列表推导式直接创建一个全是int的新列表,替换原来的list1:
list1=["-7","-7","-6"] list1 = [int(item) for item in list1] # 生成新的整数列表 print(type(list1[0])) # 输出<class 'int'>
这样就能得到你预期的结果啦!
内容的提问来源于stack exchange,提问作者Udit Garg
相关产品推荐
相关产品推荐

