Python 随机列表理解

2024-01-07

我有一个类似于以下内容的列表:

[1 2 1 4 5 2 3 2 4 5 3 1 4 2] 

我想从此列表中创建 x 个随机元素的列表,其中所选元素都不相同。困难的部分是我想通过使用列表理解来做到这一点...... 如果 x = 3,可能的结果是:

[1 2 3]
[2 4 5]
[3 1 4]
[4 5 1]

etc...

Thanks!

我应该指定我无法将列表转换为集合。对不起! 我需要对随机选择的数字进行加权。因此,如果 1 在列表中出现 4 次,3 在列表中出现 2 次,则 1 被选择的可能性是其两倍......


免责声明:“使用列表理解”的要求是荒谬的。

此外,如果您想使用权重,Eli Bendersky 的页面上列出了许多优秀的方法加权随机抽样 http://eli.thegreenplace.net/2010/01/22/weighted-random-generation-in-python/.

以下是效率低下、无法扩展等。

也就是说,它不是一个而是两个(两个!)列表推导式,返回一个列表,从不重复元素,并且在某种意义上尊重权重:

>>> s = [1, 2, 1, 4, 5, 2, 3, 2, 4, 5, 3, 1, 4, 2]
>>> [x for x in random.choice([p for c in itertools.combinations(s, 3) for p in itertools.permutations(c) if len(set(c)) == 3])]
[3, 1, 2]
>>> [x for x in random.choice([p for c in itertools.combinations(s, 3) for p in itertools.permutations(c) if len(set(c)) == 3])]
[5, 3, 4]
>>> [x for x in random.choice([p for c in itertools.combinations(s, 3) for p in itertools.permutations(c) if len(set(c)) == 3])]
[1, 5, 2]

.. 或者,如 FMc 所简化:

>>> [x for x in random.choice([p for p in itertools.permutations(s, 3) if len(set(p)) == 3])]
[3, 5, 2]

(我将离开x for x在那里,尽管不简单地写会很痛苦list(random.choice(..))或者只是将其保留为元组..)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 随机列表理解 的相关文章

随机推荐

  • 使用 CGContext 绘制线条

    我想在表视图单元格中画线 以便可以将文本字段和开关放置在单个单元格中 我增加了单元格的高度 如何在单元格中画线 我有 UIView 的子类 其中包含以下代码 Get the CGContext from this view CGContex
  • 围绕轴标签绘制彩色框

    考虑这个简单的例子 library tidyverse tibble x as factor c good neutral bad y as factor c bad neutral bad gt ggplot aes x x y y ge
  • 在emacs中使用pdb时如何指定路径?

    我正在尝试在 emacs 中使用 pdb 我需要更改路径PYTHONPATH lib 但是当我输入时 Run pdb like this PYTHONPATH lib pdb pychess Emacs 给我一个错误 说找不到文件 PYTH
  • sqlQuery 的 RODBC 错误处理

    我没有找到任何好的错误测试函数来测试结果sqlQuery这让我很惊讶 在文档中 http www inside r org packages cran rodbc docs sqlQuery http www inside r org pa
  • 使用 PHP 显示 MySQL 数据库中的所有表?

    我正在尝试显示数据库中的所有表 我试过这个 sql SHOW TABLES result conn gt query sql tables result gt fetch assoc foreach tables as tmp echo t
  • _var 和 self.var 之间的区别

    随着所有这些新的 ARC 内容 不属于 NDA 的出现 处理属性的默认设置似乎是在实现文件中显式设置没有 ivar 的属性 直到您使用以下内容综合它 synthesize var var 设置变量的最佳实践是什么 我知道之间的区别var a
  • 将 [(key: String, value: String)] 转换为 [String:String]

    我想将 key String value String 转换为 String String 可以吗 如果是的话我怎么做 谢谢 var KeyValuePair key String value String key 2017 01 04 v
  • 检查输入时出错:预期dense_input的形状为(21,),但得到的数组的形状为(1,)

    如何修复输入数组以满足输入形状 我尝试转置输入数组 如上所述here https stackoverflow com questions 50336110 valueerror error when checking expected de
  • ACE oleDb 驱动程序无法处理巨大的 Excel 文件

    ACE OLEDB 驱动程序对于较大的文件是否存在任何已知问题 我使用下面的代码来检索 400Mb xls 文件中的工作表 public string GetWorkSheets var connectionString Provider
  • C# 中 (int) 和 Convert.toint32 之间的区别

    当我将对象转换为 int 时 int object 然后当对象值为 0 时 他会给我错误 指出特定的强制转换无效 当我将对象转换为 int 时 convert toint32 object 然后他工作并给我 0 意味着演员阵容有效 我想知道
  • 如何在 C++ 中逐行读取文件中的整数组

    我有一个文本文件 每一行都有一个或多个整数 用空格分隔 我怎样才能用 C 优雅地阅读这个内容 如果我不关心行 我可以使用 cin gt gt 但整数在哪一行很重要 输入示例 1213 153 15 155 84 866 89 48 12 1
  • WP REST API 自定义 POST 端点不工作,404 错误

    我正在编写一个插件 但我在使用自定义端点时遇到了一些问题 该端点从应用程序前端 Angular 接收数据 并将向其传递另一个函数来过滤一些数据 我对产品数据库的 GET 请求工作得很好 但 POST 只返回 404 错误 如果我在 Inso
  • 使用淡入淡出动画重绘 UIView?

    In TwUI 有一个方法叫做redraw on TUIView 它强制视图重绘 但它还带有视图的新旧状态之间的自由淡入淡出动画 我想知道在正常情况下是否可能发生类似的事情UIView 基本上 我如何重绘视图 setNeedsDisplay
  • STM32的HAL中实现单按、长按和双按功能

    我正在尝试实现单击 双击和长按功能来执行不同的功能 到目前为止 我已经理解了单击和长按的逻辑 但我不知道如何检测双击 至于代码 我使用计数器实现了单击和长按 但代码仅停留在第一个 if 条件上 bool single press false
  • 渲染画布时单词重叠

    我有一个很长的文本要渲染到画布上 并且单词在 Safari 中重叠且混乱 但在 Chrome 中完美运行 我正在使用最新版本的 html2canvas 库 v1 0 0 rc 3 这是 safari 中的输出 https i stack i
  • 错误消息:看起来您缺少一些运行 Electron 所需的依赖项

    全局安装 electro forge 后npm install g electron forge我在与 electro forge 相关的终端中输入的任何命令都会显示以下消息 它似乎缺少运行 Electron 所需的一些依赖项 确保您安装了
  • 根据国家地理 IP 将观众重定向到其他网站

    假设我有一个网站 www abc com featured abc 并且想将除马来西亚以外其他国家 地区的观众重定向 仅该链接 到 YouTube 视频 但 www abc com 仍然是全球性的 是的 我的服务器已经使用 geoip 模块
  • 使用httpwebrequest从网站获取图像到byte[]

    我想读取网站上 PNG 文件的原始二进制文件并将其存储到 byte 中 到目前为止我有这样的内容 Uri imageUri new Uri http www example com image png Create a HttpWebreq
  • 使用 java processbuilder 运行 bat 文件

    我正在尝试使用 java 进程生成器执行 bat 文件 但它不会启动该进程 请告诉我我在这里做错了什么 当我用 file sh 替换 file bat 时 这段代码在 Linux 环境下工作得很好 final ArrayList
  • Python 随机列表理解

    我有一个类似于以下内容的列表 1 2 1 4 5 2 3 2 4 5 3 1 4 2 我想从此列表中创建 x 个随机元素的列表 其中所选元素都不相同 困难的部分是我想通过使用列表理解来做到这一点 如果 x 3 可能的结果是 1 2 3 2