相关疑难解决方法(0)

在函数编程风格中具有容量限制的子元中拆分python元组

我在python中有一些元组.例如,容量限制为5.我想将子元素拆分为由元素总和限制的子元素:

例如:

input: (3, 1, 4, 2, 2, 1, 1, 2) and capacity = 5
output: (3, 1) (4) (2, 2, 1) (1, 2) #each subtuple is less than 5, order safe.
Run Code Online (Sandbox Code Playgroud)

我正在寻找这个任务的一个很好的表达解决方案,最好是在编程的功能风格(itertools.dropwhile例如使用或类似的东西)

python functional-programming python-itertools

12
推荐指数
3
解决办法
954
查看次数

使用itertools在Python中的Powersets

我正在尝试在Python 3中创建一个powerset.我找到了对该itertools 模块的引用,并且我使用了该页面上提供的powerset代码.问题是:代码返回itertools.chain对象的引用,而我想访问powerset中的元素.我的问题:如何做到这一点?

非常感谢您的见解.

python python-itertools python-3.x

6
推荐指数
1
解决办法
9439
查看次数

笛卡尔产品重复

所以我想创建一个带正整数n并返回一堆的函数n-tuples,填充所有可能的组合True/False (1/0),例如:

f(1) = (0,),(1,)


f(2) = (0, 0), (0, 1), (1, 0), (1, 1)
Run Code Online (Sandbox Code Playgroud)

我的代码是:

def fill(n: int) -> Tuple[Tuple[int]]:
    if n == 1:
        return (0,),(1,)
    return tuple((i + j) for i in fill(n-1) for j in fill(1))
Run Code Online (Sandbox Code Playgroud)

我听说python不太适合递归,一般觉得这不是有效的解决方案.

看起来像使用给定数量范围的powerset(powerset的配方来自itertools模块)然后使用某种指示器功能就可以做到这一点.

from itertools import chain, combinations

def range_powerset(n: int):
    s = list(range(n))
    return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))

def indicator(A: Iterable, B: Iterable):
    return tuple(i in A for i …
Run Code Online (Sandbox Code Playgroud)

python combinatorics python-3.x

0
推荐指数
1
解决办法
103
查看次数