如何打破发电机?

时间:2018-01-19 16:16:18

标签: python list loops generator

    def permutationEquation(p):
        result=[]
        for i in range(1,len(p)+1):
            result.append(list(y+1 for y,v in enumerate(p) if(p[v-1]==i)))

如果条件满足,如何打破一次。 我不想要另一个for循环,我希望代码很简单。 以及如何使结果列表成为单个维度。 现在列表是[[1],[2],[3]] 我希望它为[1,2,3]

2 个答案:

答案 0 :(得分:3)

这很简单,您只需将其转换为"message": "Variable \"$rolls\" of type \"Int\" used in position expecting type \"Int!\"."循环。

您不需要for循环的事实是您将要处理的事情。

for

答案 1 :(得分:2)

如果输入p是一个排列,那么你的函数计算的是p到2的幂,或者排列的倒数的平方。这可以用线性时间计算(排列大小的线性),而你的代码使用二次时间。

我还建议在排列中使用数字0,1,...,n-1,因为这与Python基于0的索引相比更好。使用这些更简单的数字时,这里有一个更简单的功能来解决您的问题:

def permutationEquation(p):
    inv = [None] * len(p)
    for i, x in enumerate(p):
        inv[x] = i
    return [inv[x] for x in inv]