Python 在php中查找整数的不等分区

Python 在php中查找整数的不等分区,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我有一个整数的总分区,我只想要那些所有值都不相等的分区 例如 -3的分区是{1,1,1}、{2,2}、{3,1}、{1,1,2}和{4}。 因此,所需的不相等分区是{3,1}和{4},因为它们不包含相等的元素。我可以筛选分区以获得所需的结果,但我需要一些有效的方法来查找所有分区,其中没有相等的项,而无需查找所有分区。我已经搜索了网络和StackOverflow,但没有任何东西确切说明我所面临的问题。每一个想法都受到赞赏。谢谢。我只想使用集合: partitions = [[1,1,1,1], [

我有一个整数的总分区,我只想要那些所有值都不相等的分区

例如

-
3的分区是{1,1,1}、{2,2}、{3,1}、{1,1,2}和{4}。


因此,所需的不相等分区是
{3,1}
{4}
,因为它们不包含相等的元素。我可以筛选分区以获得所需的结果,但我需要一些有效的方法来查找所有分区,其中没有相等的项,而无需查找所有分区。我已经搜索了网络和StackOverflow,但没有任何东西确切说明我所面临的问题。每一个想法都受到赞赏。谢谢。

我只想使用集合:

partitions = [[1,1,1,1], [2,2], [3,1], [1,1,2], [4]]

unique_partions = [p for p in partitions if len(p) == len(set(p))]

好的,所以你想要速度,对吗

我想速度来自于最好的分区算法和记忆,而不是在相同的数字情况下使用任何预先终止的分区

如果您在stackoverflow上搜索,您会发现很多好的,例如: (包括基准) 或 (来自他的编辑)

我会把这么好的一个和Turn提供的过滤器结合起来。 如果您想要更高的速度,您还可以尝试在数字相同的情况下从函数返回None,和/或用C代码编写分区并编译它

结合起来,它可能看起来像这样(accel_asc()从链接复制):

#/usr/bin/env python
#-*-编码:utf-8-*-
def加速asc(n):
a=[0表示范围(n+1)内的i]
k=1
y=n-1
而k!=0:
x=a[k-1]+1
k-=1

而2*x你试过什么?请发布示例代码以改进您的帖子。我认为您的示例显示了4的分区,而不是3的分区。您的标题是“在php中”,但您的标记是“python”。你想要哪一个?他想在完成整个爱国之前,直接过滤那些有相等价值的。对不起,我不明白你的意思。你能详细说明一下吗?
#!/usr/bin/env python
# -*- coding: utf-8 -*-

def accel_asc(n):
    a = [0 for i in range(n + 1)]
    k = 1
    y = n - 1
    while k != 0:
        x = a[k - 1] + 1
        k -= 1
        while 2 * x <= y:
            a[k] = x
            y -= x
            k += 1
        l = k + 1
        while x <= y:
            a[k] = x
            a[l] = y
            yield a[:k + 2]
            x += 1
            y -= 1
        a[k] = x + y
        y = x + y - 1
        yield a[:k + 1]

N = 20
unequal_partitions = [p for p in accel_asc(N) if len(p) == len(set(p))]
print unequal_partitions