首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用sympy.utilities.iterables.variations()来获取permutations_with_replacement吗?

我应该使用sympy.utilities.iterables.variations()来获取permutations_with_replacement吗?
EN

Stack Overflow用户
提问于 2019-01-10 12:21:56
回答 1查看 81关注 0票数 1

我在试验不需要替换的交变

代码语言:javascript
复制
from sympy.functions.combinatorial.numbers import nP
from sympy.utilities.iterables import permutations

nP('abc', 2)
# >>> 6

list(permutations('abc', 2))
# >>> [('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]

接下来,我不想尝试置换替换。似乎没有类似于permuations_with_replacement()方法的combinations_with_replacement()方法,但是有一个variations()方法:

代码语言:javascript
复制
from sympy.utilities.iterables import variations

nP('abc', 2, replacement=True)
# >>> 9

list(variations('abc', 2, repetition=True))
# >>>
    [('a', 'a'),
     ('a', 'b'),
     ('a', 'c'),
     ('b', 'a'),
     ('b', 'b'),
     ('b', 'c'),
     ('c', 'a'),
     ('c', 'b'),
     ('c', 'c')]

variations()方法是否执行与permutations_with_replacement()预期的相同功能?

另见:sympy.utilities.iterables.combinations() with replacement?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-10 16:24:03

variations方法与您所认为的完全一样,即计算笛卡儿乘积,恰当地命名为product,包的方法。

这意味着list(sympy.utilities.iterables.product('abc', repeat=2)将产生同样的结果。对于repetition=Falsevariations等于permutations

这也可以从variations的内部代码中看到。

代码语言:javascript
复制
if not repetition:
    seq = tuple(seq)
    if len(seq) < n:
        return
    for i in permutations(seq, n):
        yield i
else:
    if n == 0:
        yield ()
    else:
        for i in product(seq, repeat=n):
            yield i
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54128621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档