求助:Python代码中的else语句为何引发无限循环?
求助:Python代码中的else语句为何引发无限循环?
嘿,我来帮你捋捋这个问题~首先得纠正一个误解:你贴出来的这段代码里,else语句本身并不会导致无限循环哦!
咱们仔细拆解下代码逻辑:你的循环是靠变量m从0开始计数,每次循环结束都会执行m += 1,只要m小于dataframe的行数,循环就继续。不管是匹配到Donald、Joe、Barrack的分支,还是进入else分支,最后都会执行m +=1,所以理论上这个循环肯定会正常结束,不会无限跑下去。
那你为什么会觉得是else引发了无限循环呢?我猜可能是这两种情况:
- 你实际运行的代码里,不小心把
m +=1的缩进搞错了——比如只把它放到了if/elif的分支里,那当进入else分支时m就不会递增,循环就会卡在当前位置无限重复; - 或者你的dataframe在循环过程中被意外修改了行数?不过你这里只是修改
lastname列的值,并不会新增或删除行,所以len(dataframe)是固定的,不会影响循环终止条件。
另外给你个小建议:用pandas处理这种批量替换的场景,完全不用写while循环,用map方法会更简洁高效,比如:
name_last_map = { 'Donald': 'Trump', 'Joe': 'Biden', 'Barrack': 'Obama' } dataframe['lastname'] = dataframe['firstname'].map(name_last_map).fillna('last name does not matter')
这样既避免了手动管理循环变量的麻烦,运行效率也更高~
备注:内容来源于stack exchange,提问作者MrMe
相关产品推荐
相关产品推荐

