如何以相反的顺序找到两个字母之间的length/interval?

How to find the length/interval between two alphabets in reverse order?

我有一个成对字符串列表。我想找到两个字母之间的 length/interval 。 到目前为止,我能够使用

找到有序字母的间隔
alpha =["AM",  "KQ",  "ZN",  "XM",  "UK"]
    
length = []
for i in alpha:
    length.append(len([chr(k) for k in range(ord(i[0]),ord(i[1]))]))
    print(length)
[12]
[12, 6]
[12, 6, 0]
[12, 6, 0, 0]
[12, 6, 0, 0, 0]

我找不到颠倒字母的间隔?

如何找到两个倒序字母之间的length/interval?是否有 python 函数可以在两个不同顺序的字母之间找到 interval/length,例如 A-ZX-A

与其生成介于 ord(i[0])ord(i[1]) 之间的列表并找出其长度,还有更好的解决方案,只需找出 ord(i[0])ord(i[1]) 之间的差异。

这并不能立即解决颠倒字母的问题,因为颠倒的字母会生成负数,但您可以使用内置的 abs() 函数解决此问题,该函数采用数字的绝对值:

length.append(abs(ord(i[0]) - ord(i[1])))

你为什么不直接这样做呢?

alpha = ["AM", "KQ", "ZN", "XM", "UK"]

length = []
for i in alpha:
    if ord(i[0]) >= ord(i[1]):
        diff = ord(i[0]) - ord(i[1])
    else:
        diff = ord(i[1]) - ord(i[0])
    length.append(diff)
    print(length)
    
# [12]
# [12, 6]
# [12, 6, 12]
# [12, 6, 12, 11]
# [12, 6, 12, 11, 10]

据我所知,但是,您无法检查它们的顺序并使用先到者作为第一个参数来查找长度。因此,如果第一个字母出现在第二个字母之后,您可以将其用作长度检查器的第一个参数。您还需要检查字母是否相同。代码可以做如下。

alpha =["AM",  "KQ",  "ZN",  "XM",  "UK"]
    
length = []
for i in alpha:
    if(len([chr(k) for k in range(ord(i[0]),ord(i[1]))]) == 0):
        if(len([chr(k) for k in range(ord(i[1]),ord(i[0]))]) == 0):
            length.append(0)
        else:
            length.append(len([chr(k) for k in range(ord(i[1]),ord(i[0]))]))
    else:
        length.append(len([chr(k) for k in range(ord(i[0]),ord(i[1]))]))
print(length)

此外,您可能应该将 print 语句移出 for 循环,因为每次都打印它有点无关紧要,或者每次只做一个参数。

也许你需要if条件 'ZN'--在你的代码中产生零--0 如果 ord(element[0]>ord[element[1] 然后反转它(例如 'NZ')或者从更大的中减去更小的或者只取 abs(difference)

您可以使用快捷方式条件 表达式并检查左值是否大于右值。

alpha = ["AM", "KQ", "ZN", "XM", "UK"]
length = []
for i in alpha:
    length.append(ord(i[0]) - ord(i[1])) if ord(i[0]) > ord(i[1]) else length.append(ord(i[1]) - ord(i[0]))

print(length)

或者更易读的方式:

alpha = ["AM", "KQ", "ZN", "XM", "UK"]
length = []
for i in alpha:
    a, b = ord(i[0]), ord(i[1])
    length.append(a - b) if a > b else length.append(b - a)

print(length)

输出

[12, 6, 12, 11, 10]