首页 > 解决方案 > 如何与来自 5 个不同列表或数组的数百万个元素组合?

问题描述

我想用来自 5 个不同数组的元素进行所有可能的组合。但是,当我运行我的代码时,错误显示数字太高。这个问题会有解决方案吗?

这是我的代码:

import numpy as np

a=np.arange(1000000000)
b=np.arange(2000000000)
c=np.arange(2000000000)
d=np.arange(1000000000)
e=np.arange(1000000000)

from itertools import product

iterables = [a,b,c,d,e]
total_combi_index=[]
for t in product(*iterables):
    total_combi_index.append(t)

标签: pythonnumpyitertools

解决方案


我们有标准库:itertools链方法和 from_iterable 方法:

itertools.chain(*iterables) 创建一个迭代器,从第一个可迭代对象返回元素,直到它耗尽,然后继续到下一个可迭代对象,直到所有可迭代对象都被耗尽。用于将连续序列视为单个序列。大致相当于:

def chain(*iterables):
    # chain('ABC', 'DEF') --> A B C D E F
    for it in iterables:
        for element in it:
            yield element

classmethod chain.from_iterable(iterable) chain() 的替代构造函数。从延迟评估的单个可迭代参数获取链接输入。大致相当于:

def from_iterable(iterables):
    # chain.from_iterable(['ABC', 'DEF']) --> A B C D E F
    for it in iterables:
        for element in it:
            yield element

在python中,我们使用迭代器来解决这类问题


推荐阅读