我想在python或Matlab中创建一个代码,将一个序列划分为多个对,并将值赋予这些对

z2acfund  于 2022-11-24  发布在  Matlab
关注(0)|答案(1)|浏览(133)

我想在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。我将感谢帮助我

yptwkmov

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)]

相关问题