如何对用户输入指定的arr_1元素及arr_2对应同位置元素同步随机重排
实现方案
核心思路
不需要打乱整个数组,只要把目标位置的元素从两个数组中同步取出,再插入到同一个随机生成的新位置即可,步骤如下:
- 先定位用户选中元素在
arr_1中的原始索引 - 分别从
arr_1和arr_2中弹出该索引位置的元素 - 生成合法的随机新索引
- 把弹出的两个元素同步插入到两个数组的新索引位置
代码实现
import random # 初始化数组 arr_1 = [2, 4, 6, 32] arr_2 = [56, 45, 12, 65] # 接收用户输入 target = input("请输入arr_1中要移动的元素:") # 按数组元素类型转换输入,这里原数组为int类型,若元素是其他类型可按需调整 try: target = int(target) original_idx = arr_1.index(target) except ValueError: print("输入的元素不存在于arr_1中") else: # 弹出两个数组对应位置的元素 val1 = arr_1.pop(original_idx) val2 = arr_2.pop(original_idx) # 生成随机新索引,范围覆盖所有合法插入位置 new_idx = random.randint(0, len(arr_1)) # 同步插入到新位置 arr_1.insert(new_idx, val1) arr_2.insert(new_idx, val2) # 输出结果 print("移动后的arr_1:", arr_1) print("移动后的arr_2:", arr_2)
注意事项
- 如果
arr_1中存在重复元素,list.index()只会返回第一个匹配元素的索引,这种场景建议让用户直接选择元素索引而非输入元素值,避免匹配错误 - 插入新索引的取值范围必须是
0到pop操作后的数组长度,否则会报索引越界错误
内容的提问来源于stack exchange,提问作者Jen
相关产品推荐
相关产品推荐

