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

Python列表长度不符合预期:计算值86为何实际返回100?

问题原因分析

你遇到的问题核心出在np.linspace()的默认行为上,咱们一步步拆解:

  • 首先,你预期的年龄范围是18到60的所有整数,一共是60-18+1=43个,乘以两种性别后总长度应该是86。
  • 但np.linspace(18,60,dtype=int)并没有生成18到60的所有整数!linspace的默认参数是生成50个均匀分布的数值(num=50是默认值),你通过dtype=int把这些数值转成整数后,会出现大量重复值,最终这个年龄列表的长度是50,而非你预期的43。
  • 这样一来,性别循环(M和F)乘以50个年龄,总长度就是2*50=100,和你看到的结果完全一致。
解决方法

要生成18到60的所有连续整数,应该用np.arange()——它是按步长生成序列的(默认步长1),注意arange是左闭右开区间,所以要写成np.arange(18, 61)才能包含60:

import numpy as np
series = ['{0}{1:02d}'.format(gender, age) for gender in ['M','F'] for age in np.arange(18, 61)]
print(len(series))  # 输出86,符合预期

也可以不用numpy,直接用Python原生的range(18, 61),效果完全一样:

series = ['{0}{1:02d}'.format(gender, age) for gender in ['M','F'] for age in range(18, 61)]
print(len(series))  # 同样输出86

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:23:07