如何在 Python 中以相反的顺序获取字母范围?
How to get a letter range in reversed order in Python?
我知道这里已经解决了这个问题(例如,Is it possible to make a letter range in python?)。不过,我希望这个问题有所不同。
下面的代码给出了任意两个字母之间的范围
[chr(i) for i in range(ord('H'),ord('P'))]
输出
['H', 'I', 'J', 'K', 'L', 'M', 'N', 'O']
对于倒序的字母范围,使用reversed()
returns空列表
[chr(i) for i in range(ord('P'),ord('H'))]
# or
[chr(i) for i in reversed(range(ord('P'),ord('H')))]
输出
[]
预期输出
['O', 'N', 'M', 'L', 'K', 'J', 'I', 'H']
如何在 Python 中获取倒序的字母范围?
ord('P')
大于 ord('H')
,因此 range(...)
为空范围。
要获得反向字母列表,请执行以下操作之一:
制作转发列表并申请reverse()
:
reversed( range(ord('H'), ord('P')) )
使用第3个参数来range()
:
range(ord('P'), ord('H'), -1)
ord('P') -> 80
ord('H') -> 72
所以 [chr(i) for i in range(ord('P'),ord('H'))]
只是 [chr(i) for i in range(80,72)]
而在 range
中默认增量值为 1.
因为起始值 > 结束值且默认步长增量为 1,所以此迭代器 运行 导致一个空列表。
您需要将增量值从默认值更改为 -1
[chr(i) for i in range(ord('P')-1,ord('H')-1,-1)]
输出
['O', 'N', 'M', 'L', 'K', 'J', 'I', 'H']
我知道这里已经解决了这个问题(例如,Is it possible to make a letter range in python?)。不过,我希望这个问题有所不同。
下面的代码给出了任意两个字母之间的范围
[chr(i) for i in range(ord('H'),ord('P'))]
输出
['H', 'I', 'J', 'K', 'L', 'M', 'N', 'O']
对于倒序的字母范围,使用reversed()
returns空列表
[chr(i) for i in range(ord('P'),ord('H'))]
# or
[chr(i) for i in reversed(range(ord('P'),ord('H')))]
输出
[]
预期输出
['O', 'N', 'M', 'L', 'K', 'J', 'I', 'H']
如何在 Python 中获取倒序的字母范围?
ord('P')
大于 ord('H')
,因此 range(...)
为空范围。
要获得反向字母列表,请执行以下操作之一:
制作转发列表并申请
reverse()
:reversed( range(ord('H'), ord('P')) )
使用第3个参数来
range()
:range(ord('P'), ord('H'), -1)
ord('P') -> 80
ord('H') -> 72
所以 [chr(i) for i in range(ord('P'),ord('H'))]
只是 [chr(i) for i in range(80,72)]
而在 range
中默认增量值为 1.
因为起始值 > 结束值且默认步长增量为 1,所以此迭代器 运行 导致一个空列表。
您需要将增量值从默认值更改为 -1
[chr(i) for i in range(ord('P')-1,ord('H')-1,-1)]
输出
['O', 'N', 'M', 'L', 'K', 'J', 'I', 'H']