从 0 到 f 的字符列表
char list from 0 to f
我写了一个python脚本,它需要一个所有十六进制字符的列表。
做 list(string.printable[:16])
得到 ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
是个好主意吗?
如何list('0123456789abcdef')
使其明确化?
如果不想拼出来,[f'{i:x}' for i in range(16)]
应该也可以。
最简单的方法是从 0 到 15 的所有数字的列表理解,格式为十六进制:
["{:x}".format(x) for x in range(0,16)]
用户 GarbageCollector 在评论中提出了一个不错的替代方案,必须对其进行修改以删除多余的大写字符:
>>> import string
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.hexdigits[:16]
'0123456789abcdef'
获取列表:
>>> list(string.hexdigits[:16])
然而,在未来的 python 版本中 string.hexdigits
中字符的顺序保持不变的事实是未知的。仍然很高兴知道 string
有许多有用的字符组。
你的问题的答案是:这不是一个特别好的主意。
来自Python docs:
string.printable
String of ASCII characters which are considered printable. This is a combination of digits
, ascii_letters
, punctuation
, and whitespace
.
Python 的实现可以遵循此定义,但选择以不同的顺序提供字符,这可能会破坏您的代码。
即使定义了顺序,如果不熟悉定义,代码会产生什么结果也不是很明显。
有一个string.hexdigits
常数,它的值严格定义为'0123456789abcdefABCDEF'
,所以取它的前16位肯定是更好的选择,但我还是会说,只要给确切的字符串本身会更清楚。
另请注意,无论如何 '01234567890abcdef'
实际上比 string.hexdigits[:16]
短两个字符。
我写了一个python脚本,它需要一个所有十六进制字符的列表。
做 list(string.printable[:16])
得到 ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
是个好主意吗?
如何list('0123456789abcdef')
使其明确化?
如果不想拼出来,[f'{i:x}' for i in range(16)]
应该也可以。
最简单的方法是从 0 到 15 的所有数字的列表理解,格式为十六进制:
["{:x}".format(x) for x in range(0,16)]
用户 GarbageCollector 在评论中提出了一个不错的替代方案,必须对其进行修改以删除多余的大写字符:
>>> import string
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.hexdigits[:16]
'0123456789abcdef'
获取列表:
>>> list(string.hexdigits[:16])
然而,在未来的 python 版本中 string.hexdigits
中字符的顺序保持不变的事实是未知的。仍然很高兴知道 string
有许多有用的字符组。
你的问题的答案是:这不是一个特别好的主意。
来自Python docs:
string.printable
String of ASCII characters which are considered printable. This is a combination of
digits
,ascii_letters
,punctuation
, andwhitespace
.
Python 的实现可以遵循此定义,但选择以不同的顺序提供字符,这可能会破坏您的代码。
即使定义了顺序,如果不熟悉定义,代码会产生什么结果也不是很明显。
有一个string.hexdigits
常数,它的值严格定义为'0123456789abcdefABCDEF'
,所以取它的前16位肯定是更好的选择,但我还是会说,只要给确切的字符串本身会更清楚。
另请注意,无论如何 '01234567890abcdef'
实际上比 string.hexdigits[:16]
短两个字符。