找到一对乱序的条目

时间:2011-10-30 21:27:36

标签: python

我正在尝试创建一个返回乱序对的数量的函数。

例如,此函数将为参数6返回'DCBA'

到目前为止我的代码是:

def calc_out_of_order_pairs(s):
    res = []
    sum = 0
    for i in s:
        for j in s:
            res.append(i+j)

    for test in res:
        if pair[0] > pair[1]:
            sum +=1

    return sum

1 个答案:

答案 0 :(得分:3)

>>> from itertools import combinations
>>> sum(x>y for x,y in combinations("DCBA",2))
6

提示:使用这样的组合会返回每对中的第一对,其中第一对中的第一个出现在字符串中,而不是第二个

>>> list(combinations("DCBA", 2))
[('D', 'C'), ('D', 'B'), ('D', 'A'), ('C', 'B'), ('C', 'A'), ('B', 'A')]

这是一种可供初学者更容易使用的替代方法

>>> s = "DCBA"
>>> count = 0
>>> for i in range(len(s)-1):
...   for j in range(i+1, len(s)):
...     if s[i]>s[j]:
...       count += 1
... 
>>> count
6