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

如何从含100个乱序1-20值的一维数组中抽取两个值及其索引?

解决方法:随机获取数组元素的索引与对应值

嘿,我来帮你搞定这个问题!你之前的思路是直接从Values里抽取值,但因为你的数组是用1-20重复凑出来的100个元素,就算拿到值也没法精准对应到原数组的具体索引——毕竟同一个值可能在多个位置出现。

最直接的解法是先随机抽取索引,再通过索引获取对应的值,这样就能同时拿到你需要的索引和元素了,具体代码如下:

情况1:选取两个不重复的索引

如果你不想重复选中同一个位置,用random.sample来抽索引(它默认会返回不重复的元素):

import random

# 先模拟你的Values数组(1-20乱序共100个元素)
Values = [random.randint(1, 20) for _ in range(100)]

# 随机选2个不重复的索引
selected_indices = random.sample(range(len(Values)), 2)

# 把索引和对应的值配对存起来
list1 = [(idx, Values[idx]) for idx in selected_indices]

# 输出示例:比如 [(23, 12), (56, 7)],第一个是索引,第二个是Values里对应的值
print(list1)

之后你要访问第二个列表的话,直接用拿到的索引就行,比如second_list[list1[0][0]]就能获取第二个列表对应第一个选中索引的值。

情况2:允许选取重复的索引

如果你的场景允许同一个位置被选中多次,把random.sample换成random.choices就行(指定k=2表示选2个):

selected_indices = random.choices(range(len(Values)), k=2)

为什么你的原代码不行?

你之前写的random.sample(Values)是从Values里抽取元素,但因为数组里有大量重复值,就算拿到[2,5],你也没法确定这两个值在Values里的具体位置——毕竟2可能在第10位也可能在第30位。直接操作索引就能完美避开这个问题啦!

内容的提问来源于stack exchange,提问作者Will.S89

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:26:48