
本文详解如何正确将包含整数和数字字符串的混合列表(如 `[2, 3, 4, '5', '6', '7']`)全部转换为整数,生成新列表;重点指出 `int(i)` 不会原地修改变量,必须显式赋值或直接用于 `append()` 等操作。
在 Python 中,int() 是一个返回新整数值的函数,它不会就地修改原始对象(字符串或数字)。因此,像 int(i) 这样的语句若未被赋值或未参与后续操作,其返回结果会被直接丢弃——这正是原代码中 lista_2 仍保留原始元素的根本原因:
lista = [2, 3, 4, '5', '6', '7']
lista_2 = []
for i in lista:
int(i) # ✅ 执行了转换,但返回值未被保存或使用
lista_2.append(i) # ❌ 追加的是原始的 i(可能是 int 或 str)
print(lista_2) # 输出:[2, 3, 4, '5', '6', '7'] —— 未发生任何转换✅ 正确做法是将 int(i) 的结果显式用于构建新列表。以下是四种推荐实现方式,按可读性与Pythonic程度递进:
1. 显式赋值后追加(适合初学者理解)
lista = [2, 3, 4, '5', '6', '7']
lista_2 = []
for i in lista:
converted = int(i) # 将转换结果存入变量
lista_2.append(converted)
print(lista_2) # [2, 3, 4, 5, 6, 7]2. 转换与追加一步完成(简洁清晰)
lista = [2, 3, 4, '5', '6', '7']
lista_2 = []
for i in lista:
lista_2.append(int(i)) # 直接传入转换后的值
print(lista_2) # [2, 3, 4, 5, 6, 7]3. 列表推导式(推荐:简洁、高效、地道)
lista = [2, 3, 4, '5', '6', '7'] lista_2 = [int(item) for item in lista] print(lista_2) # [2, 3, 4, 5, 6, 7]
4. map() 函数(函数式风格,适合批量处理)
lista = [2, 3, 4, '5', '6', '7'] lista_2 = list(map(int, lista)) print(lista_2) # [2, 3, 4, 5, 6, 7]
⚠️ 注意事项:
- 所有方法均要求列表中每个元素均可被 int() 安全转换(即字符串必须为有效整数格式,如 '123',不能是 'abc' 或 '3.14'),否则将抛出 ValueError。如需容错处理,建议结合 try/except 或预校验逻辑。
- 若原始列表含浮点数字符串(如 '3.14'),int('3.14') 会报错;此时应先用 float() 再转 int,或使用 round() 等策略,视业务需求而定。
总结:核心原则是——int() 是纯函数,不改变输入,只返回结果;务必让该结果参与数据流(赋值、传参、返回等),否则转换即无效。 推荐优先使用列表推导式,兼顾可读性与性能。










