我想在Python或Matlab中创建一个程序,将一个序列分成若干对,使第一个字母与所有其他字母配对,并给这些配对赋值。例如“ABCBADD”AB=1 AC=1/2 AB=1/3 AA=1/4 AD=1/5 AD=1/6现在跳过序列的第一个字母“BCBADD”BC=1 BB=1/2 BA=1/3 BD=1/4 BD=1/5现在跳过第一个字母,依此类推“CBADD”并将相同的两个值相加,如AB=1+1/3,AD=1/5+1/6,BD=1/4+1/5。我将感谢帮助我
yptwkmov1#
您可以使用两个循环:
s = "ABCBADD" output = [(s[i] + c, 1 /(idx + 1)) for i in range(len(s) -1) for idx, c in enumerate(s[i+1:])]
输出:
print(output) [('AB', 1.0), ('AC', 0.5), ('AB', 0.3333333333333333), ('AA', 0.25), ('AD', 0.2), ('AD', 0.16666666666666666), ('BC', 1.0), ('BB', 0.5), ('BA', 0.3333333333333333), ('BD', 0.25), ('BD', 0.2), ('CB', 1.0), ('CA', 0.5), ('CD', 0.3333333333333333), ('CD', 0.25), ('BA', 1.0), ('BD', 0.5), ('BD', 0.3333333333333333), ('AD', 1.0), ('AD', 0.5), ('DD', 1.0)]
1条答案
按热度按时间yptwkmov1#
您可以使用两个循环:
输出: