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

Numpy Array Lists调用append方法未成功添加所有整数问题

问题原因

  • list.append()方法用法错误:Python原生列表的append是实例方法,仅接收1个参数(要添加的元素),不需要传入列表本身。你写的poslist.append(poslist, i)属于语法错误,完全达不到添加元素的效果,你混淆了原生列表方法和numpy.append()的写法,且就算是np.append也是返回新数组,不会修改原列表。
  • append语句的位置错误:你仅在奇数处理的分支里写了添加逻辑,偶数计算、初始值、最终值1都没有触发添加操作,自然大部分数值都没被记录。

修正方案

修改列表添加逻辑,将添加语句移到每次数值更新之后,修正append用法即可,修正后代码如下:

import matplotlib.pyplot as plt

poslist = []
numlist = []
i = 1

num = int(input('Number to check?'))
plt.title(f'{num}: Collatz Graph')
plt.xlabel('Step')
plt.ylabel('Value')

# 添加初始值
poslist.append(i)
numlist.append(num)
print(num)

while num != 1:
    i += 1
    if num % 2 == 0:
        num = num // 2
    else:
        num = num * 3 + 1
    # 每次更新完数值统一添加,覆盖所有分支场景
    print(num)
    poslist.append(i)
    numlist.append(num)

print('Number Array:', numlist)
print('Position Array', poslist)
plt.plot(poslist, numlist)
plt.show()

本次修改核心调整:

  1. 修正append用法,直接传入要添加的元素即可
  2. 把添加逻辑统一放到每次数值更新后,不管奇偶都能被记录,最终的终止值1也会被正常加入列表
  3. 调整循环判断条件,逻辑更简洁,移除了无效的numpy导入(原生列表完全满足需求,若需要numpy格式可在绘图前统一转换)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:24:02