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

Jupyter Notebook中Python的append()循环重复追加问题求助

Jupyter Notebook中Python append()重复运行单元格时列表不断追加的问题

问题描述

  • 从字符串提取字母存入列表ltr;
  • 为ltr的每个元素设置判断条件,将布尔结果存入ltr_spec列表;
  • 手动初始化ltr_spec后首次运行正常,但重复运行单元格时,ltr_spec会不断追加新元素,未像ltr那样被重置为空列表;
  • 附示例代码及多次运行的输出结果,疑问:这是循环、append()还是Jupyter Notebook的问题?

示例代码

s ='Qm1p4Q7p5d2'
ltr = []
# 测试'ltr'的每个元素是否符合字符串中字母的规范
ltr_j = False
ltr_spc = []

for i in s:
    if i.isalpha():
        ltr.append(i)
# 利用模运算(数学概念)定位字母的位置
if (len(ltr) % 3 == 0):
    for j in range(len(ltr)):
        # 测试ltr列表的索引、字母及大小写规范
        if ((j % 3 == 0 and ltr[j] == "Q") or
                # 请教有没有不用Numpy替代R中j %in% c(1,2)的写法!
            (j % 3 == 1 and ((ltr[j] == "d" and ltr[j+1] == "p") or (ltr[j] == "p" and ltr[j+1] == "d"))) or
                # 请教下面的条件是否多余,因为上面已经检查过相关条件了..
            (j % 3 == 2 and ((ltr[j] == "d" and ltr[j-1] == "p") or (ltr[j] == "p" and ltr[j-1] == "d")))):
                ltr_j = True
        else:
            ltr_j = False
        ltr_spec.append(ltr_j)

运行输出

首次运行输出

ltr
['Q', 'm', 'p', 'Q', 'p', 'd']
ltr_spec
[True, False, False, True, True, True]

第二次运行输出

ltr
['Q', 'm', 'p', 'Q', 'p', 'd']
ltr_spec
[True, False, False, True, True, True, True, False, False, True, True, True]

第三次运行输出

ltr
['Q', 'm', 'p', 'Q', 'p', 'd']
ltr_spec
[True,
 False,
 False,
 True,
 True,
 True,
 True,
 False,
 False,
 True,
 True,
 True,
 True,
 False,
 False,
 True,
 True,
 True]

问题原因与解决方法

这是Jupyter Notebook的变量生命周期特性导致的,和循环、append()本身无关。

Jupyter的所有单元格共享同一个Python内核会话,变量会在内存中持续保留。你的代码里写了ltr_spc = [],但实际操作的列表是ltr_spec——第一次运行时,Python会自动创建ltr_spec变量并执行追加;之后每次运行单元格,你都没有重新初始化ltr_spec为空列表,而是直接在已有列表的基础上继续追加元素,所以列表会越来越长。

而ltr每次运行都会被明确赋值为[],因此每次都会被重置为空,不会累积元素。

解决方法:把代码里的ltr_spc = []改成ltr_spec = [],确保每次运行单元格时都重新初始化这个列表。

代码附带疑问解答

  1. 替代R中j %in% c(1,2)的写法:可以直接用j % 3 in (1, 2),或者1 <= j % 3 <= 2,完全不需要依赖Numpy。
  2. j%3==2的条件确实冗余:当j%3==1时已经验证了j和j+1的关系,而j%32的情况就是j-1%31的场景,之前的判断已经覆盖了该逻辑,所以这个条件可以删除,不影响最终结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:30:57