如何解决在Python中从M个不同长度的列表中选择N个元素的多个随机序列
我有 X 个元素列表,每个列表包含不同数量的元素(在单个列表中没有重复)。我想生成(如果可能,500)3 个元素的序列,其中每个元素属于不同的列表,并且序列不重复。所以像:
X(在本例中为 4 个)元素列表:[A1,A2],[B1,B2,B3,B4],[C1],[D1,D2,D3,D4,D5]
可能的结果:[A1,D2],[B3,C1,[A1,C1]...(这里不可能有 500 个序列,所以会更少)
我想我知道如何用一个讨厌的循环来做:从联合列表中加入所有列表,random.sample(len(l),3),如果 2 个索引属于同一个列表重复,如果不是,检查之前是否找不到该序列。但这会很慢。我正在寻找一种更 Pythonic 或更聪明的数学方法。
也许更好的方法是使用 random.sample([A,B,C,D],3,p=[len(A),len(B),len(C),len(D)] ),然后从它的每个序列中,从序列中的每个组中随机选择一个元素,然后检查以这种方式生成的新序列之前是否没有生成过。但同样,很多循环。
有更好的想法吗?
解决方法
检查 itertools
模块(特别是组合和排列)。
您可以从 X 列表中的 3 个元素的排列中获得 random.choice()
(因此选择 3 个列表),并为每个元素获得一个 random.choice()
(随机模块)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。