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

Python中row[1]实现每行第二列字符串转整数的原理疑问

代码执行逻辑解析

首先看这段代码:

ev_data = [['vehicle', 'range', 'price'],
       ['Tesla Model 3 LR', '310', '49900'],
       ['Hyundai Ioniq EV', '124', '30315'],
       ['Chevy Bolt', '238', '36620']]
for row in ev_data[1:]:
    ev_range = row[1]
    ev_range = int(ev_range)
    row[1] = ev_range

print(ev_data)

核心问题拆解

1. 为什么修改row[1]能改变原列表ev_data的内容?

Python里的列表属于可变对象,当你用for row in ev_data[1:]循环时,row并不是原数据的副本——它直接指向ev_data里对应的那个子列表。打个比方,row就像你拿到的一把房门钥匙,开门进去修改房间里的东西,原房间(也就是ev_data里的子列表)自然会跟着变。所以你对row做的任何修改,都会直接作用在原ev_data的对应位置上。

2. row是如何定位并修改每行第二列的?

一步一步拆解循环过程:

  • ev_data[1:]:跳过索引为0的表头行,取后面所有子列表(也就是三行车辆数据)。
  • 每次循环时,row就代表当前迭代到的那个子列表(比如第一次循环,row就是['Tesla Model 3 LR', '310', '49900'])。
  • row[1]:Python列表索引从0开始,所以row[1]就是这个子列表的第二个元素(也就是里程数,一开始是字符串类型的'310')。
  • 把row[1]赋值给ev_range,再用int()转成整数,最后把整数重新赋值给row[1]——因为row指向原ev_data的子列表,所以原列表里的对应位置就被替换成整数了。

循环三次后,ev_data里所有车辆行的里程数就都从字符串变成整数了,最终打印的结果会是:

[['vehicle', 'range', 'price'], ['Tesla Model 3 LR', 310, '49900'], ['Hyundai Ioniq EV', 124, '30315'], ['Chevy Bolt', 238, '36620']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:02:42