生成包含数组中每个元素组合的数组

Rtr*_*der 2 python combinations list

我有一个大约1000个元素的数组,我想要做的是从包含每个元素组合的数组生成大小为100的数组.例如,假设我有这个数组:

[A,B,C,D,E,F,G,H,I,J]
Run Code Online (Sandbox Code Playgroud)

将它拆分为大小为2的数组我希望数组看起来像这样:

[A,B]
[A,C]
[A,D]
[A,E]
[A,F]
[A,G]
[A,H]
[A,I]
[A,J]
[B,C]
...etc...
Run Code Online (Sandbox Code Playgroud)

我很困惑如何做任何建议会有所帮助,

谢谢

Sim*_*ser 12

您可以使用itertools模块中的组合功能:

>>> from itertools import combinations
>>> list(combinations('ABCD', 2))
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]
Run Code Online (Sandbox Code Playgroud)

第一个参数是输入列表,第二个参数是生成的子序列的长度.

  • 重要的是,`itertools.combinations`返回一个生成器,而不是列表.这意味着它不需要使用大量内存,因为它会在您迭代时创建每个组合,而不是预先创建.当组合的数量很大时这很重要(尽管你也会遇到运行时间问题,如果你确实想要1000个元素的100个元素的所有组合). (3认同)