You need to enable JavaScript to run this app. Python中df['col'].unique()在for循环中的执行次数问题
优惠活动
大模型
产品
解决方案
定价
更多

Python中df['col'].unique()在for循环中的执行次数问题

结论

df["col"].unique() 仅会在for循环启动前调用一次,返回的唯一值序列会被完整存储在内存中作为迭代对象,后续每次循环迭代都会直接从这个已生成的序列中顺序取值,不会重复执行unique函数。

原理说明

这是Python for循环的固定执行逻辑:for 迭代变量 in 可迭代对象的语法中,in关键词后方的表达式只会在循环初始化阶段计算一次,得到可迭代对象后全程复用,不会在每次迭代时重新计算。

你顾虑的「每次迭代重新调用unique导致重复取值」的情况不会发生。哪怕循环过程中df["col"]的内容发生修改,循环迭代的仍然是初始化阶段生成的旧唯一值序列,不受后续DataFrame变更影响。

验证示例

你可以运行以下代码验证该逻辑:

import pandas as pd

# 初始化测试DataFrame
df = pd.DataFrame({"col": [1, 2, 1, 3]})
iter_count = 0

for val in df["col"].unique():
    print(f"当前迭代值:{val}")
    # 循环过程中修改df,新增重复值
    df.loc[len(df)] = {"col": 1}
    iter_count += 1

print(f"循环总迭代次数:{iter_count}")
print(f"循环结束后df列的唯一值:{df['col'].unique()}")

运行输出如下:

当前迭代值:1
当前迭代值:2
当前迭代值:3
循环总迭代次数:3
循环结束后df列的唯一值:[1 2 3]

可以看到哪怕循环中不断新增重复值,迭代次数仍为初始unique返回的3个值,没有重复取值也没有新增迭代次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 09:27:03