如何用Python将两个列表元素随机分配至另外两个列表
随机拆分列表实现方案
原代码问题
原有写法存在几个语法和逻辑错误,无法实现需求:
- Python列表定义语法错误,不能在列表内部直接给元素赋值变量
range()仅用于生成整数等差序列,无法用来拼接混合元素生成列表- 没有做随机打乱逻辑,也没有控制元素不重复抽取,会导致P1、P2出现重复元素
正确实现
直接用Python标准库random的shuffle方法就能实现,逻辑非常简单:合并两个源列表 -> 随机打乱顺序 -> 对半拆分即可,全程不需要写冗余循环。
import random # 定义两个源列表 A = ["A1", "A2", "A3", "A4"] B = ["101", "102", "103", "104"] # 合并为总元素集合 all_elements = A + B # 原地随机打乱元素顺序 random.shuffle(all_elements) # 拆分得到两个目标列表,每个长度4 P1 = all_elements[:4] P2 = all_elements[4:]
执行后每次都会得到随机分配的结果,所有元素不重复,和预期示例效果一致,比如某次运行输出:
P1 = ['A4', '101', '104', 'A2'] P2 = ['102', 'A3', '103', 'A1']
如果需要输出和示例一样的逗号拼接字符串格式,直接用",".join(P1)就能转换。
内容的提问来源于stack exchange,提问作者Hany.
相关产品推荐
相关产品推荐

