我正在尝试创建一个返回乱序对的数量的函数。
例如,此函数将为参数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
答案 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