如何以相反的顺序找到两个字母之间的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-Z
或 X-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]
我有一个成对字符串列表。我想找到两个字母之间的 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-Z
或 X-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]