Python Pandas内层循环变量重置问题:实现用户对应分段域名输出
问题解决方案
问题根源
你遇到的核心问题是内层循环的for x in domain_list.index会强制重置x的值。每次外层循环启动时,这个for语句会把x重新绑定到domain_list.index的第一个元素(也就是0),直接覆盖你在外层维护的x变量,导致每个用户都重复输出前10个域名。
修正后的代码
import pandas as pd user_list = pd.read_csv(r'C:\Users\Administrator\Desktop\user_list.csv') domain_list = pd.read_csv(r'C:\Users\Administrator\Desktop\domainlist.csv') x = 0 # pandas是0基索引,从第0个域名开始计数 for y in user_list.index: print(user_list.iloc[y, 0]) # 计算当前用户要输出的域名结束位置 end_idx = x + 10 # 避免超出域名列表的实际长度 if end_idx > len(domain_list): end_idx = len(domain_list) # 输出从x到end_idx的连续域名 for domain in domain_list.iloc[x:end_idx, 0]: print(domain) # 更新x为下一次的起始位置 x = end_idx print(f"out of loop, value of x is {x}")
代码说明
- 放弃内层遍历
domain_list.index的方式,改用切片直接获取指定范围的域名,精准定位当前用户需要的10个连续条目。 - 每次外层循环结束后,将x更新为本次的结束位置
end_idx,确保下一个用户从下一组域名开始输出。 - 增加边界判断,当剩余域名不足10个时,仅输出剩余的所有域名,避免索引越界报错。
内容的提问来源于stack exchange,提问作者Philip Fernando
相关产品推荐
相关产品推荐

