如何在Python嵌套列表中随机选4个元素打乱且其余元素位置不变?
解决方案
要实现仅随机选取子列表中的4个元素打乱顺序、其余元素位置不变的需求,可以通过以下步骤修改代码:
- 为每个子列表随机生成4个不重复的索引
- 提取这些索引对应的元素并打乱
- 将打乱后的元素放回原索引位置
修改后的完整代码:
import random Bestsmell = ( [[1,2,3,4,5,6,7,8,9,10], [1,2,3,4,5,6,7,8,9,10], [1,2,3,4,5,6,7,8,9,10]], [[6,7,8,9,10,11,12,13,14,15], [6,7,8,9,10,11,12,13,14,15], [6,7,8,9,10,11,12,13,14,15]] ) # 处理第一个分组中的所有子列表 for sublist in Bestsmell[0]: # 随机选取4个不重复的索引 selected_indices = random.sample(range(len(sublist)), 4) # 获取选中索引对应的元素 selected_elements = [sublist[i] for i in selected_indices] # 打乱选中的元素 random.shuffle(selected_elements) # 将打乱后的元素放回原索引位置 for idx, pos in enumerate(selected_indices): sublist[pos] = selected_elements[idx] # 验证结果(可选) print(Bestsmell[0])
代码说明
random.sample(range(len(sublist)), 4):从子列表的所有索引中随机挑选4个不重复的索引,确保不会重复选中同一个位置。selected_elements = [sublist[i] for i in selected_indices]:提取选中位置的元素到临时列表。random.shuffle(selected_elements):打乱临时列表中的元素顺序。- 最后通过循环将打乱后的元素逐一放回原索引位置,保证其他元素的位置不受影响。
内容的提问来源于stack exchange,提问作者Weena Sihg
相关产品推荐
相关产品推荐

