首页 > 解决方案 > Python 字节串子串切片返回不同的表示

问题描述

在尝试修剪前后括号 - [ 和 ] - 我遇到了一些意想不到的事情。在 python 3.7 解释器中:

>>> string = [b'0123456789']
>>> string[0][:5]
b'01234'
>>> string[0][0]
48
>>> string[0][:5] == b'01234'
True
>>> string[0][0] == b'0'
False

这对我来说就像一个矛盾。我是 Python 新手,所以,我是否正确解释了这一点,这很奇怪吗?

标签: pythonarrays

解决方案


不,这并不奇怪:

>>> type(b'0')
<class 'bytes'>
>>> type(b'0'[0])
<class 'int'>

所以,一个元素bytes一个整数。显然,整数不能等于对象,因为它没有意义(例如,bytes你如何比较b'123'and ?)。12

文档中引用:

由于 bytes 对象是整数序列(类似于元组),因此对于 bytes 对象bb[0]将是integer,而b[0:1]将是长度为 1 的 bytes 对象。


推荐阅读