本文详解如何正确将包含整数和数字字符串的混合列表(如 `[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程度递进:
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]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]lista = [2, 3, 4, '5', '6', '7'] lista_2 = [int(item) for item in lista] print(lista_2) # [2, 3, 4, 5, 6, 7]
lista = [2, 3, 4, '5', '6', '7'] lista_2 = list(map(int, lista)) print(lista_2) # [2, 3, 4, 5, 6, 7]
⚠️ 注意事项:
总结:核心原则是——int() 是纯函数,不改变输入,只返回结果;务必让该结果参与数据流(赋值、传参、返回等),否则转换即无效。 推荐优先使用列表推导式,兼顾可读性与性能。