【问题标题】:Python get all comination of sub-sampling from listPython从列表中获取子采样的所有组合
【发布时间】:2019-06-23 07:27:44
【问题描述】:

我有两个列表: A 大小为 49,B 大小为 68。

我想遍历列表中所有可能大小为 32 的子样本。

在python中最好的方法是什么?

【问题讨论】:

  • 更具体。
  • 阅读this
  • 您在 A 中有 49 个元素,在 B 中有 68 个元素,并且想要每个可能的样本?像 a0b0、a0b1、...、a0b67、a1b0 等等?那么32 呢?
  • @crissal 不,它不应该是重复。 a0b0, a1b5, a2b1, a9b6, ...
  • 我希望你有足够的时间,这将需要一段时间来遍历所有这些

标签: python list iteration combinations itertools


【解决方案1】:

您可以使用itertoolscombinations 方法。 只需将items 数据和combinations 方法中的计数从2 更改为32。 请参考以下示例代码:

from itertools import combinations

items_a = ['a', 'b', 'c']
items_b = ['1', '2', '3', '4', '5']
items = items_a + items_b

print(list(combinations(items_a, 2)))
print(list(combinations(items_b, 2)))

结果。

[('a', 'b'), ('a', 'c'), ('b', 'c')]
[('1', '2'), ('1', '3'), ('1', '4'), ('1', '5'), ('2', '3'), ('2', '4'), ('2', '5'), ('3', '4'), ('3', '5'), ('4', '5')]

【讨论】:

  • 请注意输出应该是列表 A 中的 32 个元素和列表 B 中的 32 个元素
  • @你是什么意思?
  • @okuoub 请提供您的示例数据。如果有,请分享您的代码 sn-p。
【解决方案2】:

你不想那样做。

您有两个大小为 48 和 68 的列表。您需要每个大小为 32 的子集。

每个都有 2 e 12 和 2 e 19 个子集。乘以 4 e 31。这是一个非常大的数字。

所以这里有一个经验法则。 10 ^ 9 大致是每秒的操作数。 10 ^ 16 是 1 年...你不想考虑 ^ 31。

让我们这样说吧。整个比特币网络的哈希率约为每秒 70、000、000 万亿次哈希。或每年 2.2 e 27。还是少了几个零。

改变你的算法。

【讨论】:

    猜你喜欢
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多