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

为何在for循环内外创建列表会产生不同结果?

为什么列表去重用"in"/"not in"时,空列表创建位置会影响结果?

正确代码的执行逻辑

my_list = [1, 2, 4, 4, 1, 4, 2, 6, 2, 9]

new_list = []  # 只初始化一次空列表
for i in my_list:
    if i not in new_list:
        new_list.append(i)

print("The list with unique elements only:")
print(new_list)

这里new_list在循环外部创建,整个循环过程中这个列表会持续保留之前的结果:

  • 第一次循环i=1,new_list为空,1不在里面,添加后new_list=[1]
  • 第二次i=2,不在[1]里,添加后变成[1,2]
  • 第三次i=4,不在里面,添加成[1,2,4]
  • 第四次i=4,已经在new_list里,直接跳过
  • 后续元素以此类推,最终累积出所有不重复的元素。

错误代码的核心问题

my_list = [1, 2, 4, 4, 1, 4, 2, 6, 2, 9]

for i in my_list:
    new_list = []  # 每次循环都重新创建空列表!
    if i not in new_list:
        new_list.append(i)

print("The list with unique elements only:")
print(new_list)

这里new_list = []被放在了循环内部,意味着每一轮循环都会把new_list重置成空列表:

  • 第一次循环i=1,new_list被设为空,添加1后变成[1],但循环结束后,下一次循环又会把它清空
  • 第二次i=2,new_list重新变成空,添加2后是[2],循环结束再次被清空
  • ...
  • 最后一次循环i=9,new_list被重置为空,添加9后变成[9],循环结束后没有后续重置,所以最终打印的就是这最后一次循环留下的[9]

说白了:循环内创建空列表等于每次都把之前的去重结果扔掉,只保留最后一次循环处理的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:43:10