请求将Python代码中的for循环转换为while循环(保留原有while循环)
将for循环转换为while循环的实现
没问题,我帮你把这段Python代码里的外层for循环转换成while循环,同时完整保留原有的内部while循环逻辑。转换后的代码如下:
# 初始化循环变量x x = 0 while x < len(b): if x + 1 < len(b): if b[x][1] == 'B' and b[x+1][1] == 'B': a.append([b[x][0], b[x][2]]) elif b[x][1] == 'B' and b[x+1][1] == 'I': kata = b[x][0] # 注意:原代码这里的变量a和外层列表a重名,会覆盖原有列表导致后续append报错 a = 1 while True: if x + a < len(b): if b[x+a][1] == 'I': kata += ' ' + b[x+a][0] a += 1 elif b[x+a][1] == 'B': break else: break a.append([kata, b[x][2]]) else: if b[x][1] == 'B': a.append([b[x][0], b[x][2]]) # 手动推进循环变量,模拟for循环的遍历逻辑 x += 1
转换思路说明
- 原
for x in range(0, len(b))的本质是遍历从0到len(b)-1的整数,所以我们用x = 0初始化循环变量,用while x < len(b)作为循环条件,每次循环结束后执行x += 1来推进遍历流程。 - 内部的while循环完全保留了原代码的逻辑,没有做任何修改。不过这里要提个小问题:原代码里内部的变量
a和外层用来存储结果的列表a重名了,这会导致外层列表被覆盖,后续执行a.append()的时候会抛出AttributeError(整数类型没有append方法),如果是笔误的话,建议把内部的变量改成别的名字,比如step。
内容的提问来源于stack exchange,提问作者ian lord perdana
相关产品推荐
相关产品推荐

