Python中非整数切片
时间: 2023-11-05 19:11:01 浏览: 115
在Python中,可以使用非整数来进行切片操作,这被称为扩展切片或者浮点切片。具体来说,扩展切片可以使用浮点数或负数作为起始和结束位置,例如:
```python
my_list = [1, 2, 3, 4, 5]
print(my_list[1.5:3.5]) # 输出 [2, 3]
print(my_list[-2.5:-0.5]) # 输出 [4]
```
需要注意的是,扩展切片返回的仍然是一个列表,而不是一个浮点数或其他数据类型。另外,扩展切片也可以使用步长参数,例如:
```python
my_list = [1, 2, 3, 4, 5]
print(my_list[1.5:4.5:2]) # 输出 [2, 4]
print(my_list[-2.5:-0.5:-1]) # 输出 []
```
在这个例子中,最后一个切片操作返回的是一个空列表,因为步长参数为负数,但起始位置小于结束位置。
相关问题
San场 2023/5/23 17:03:01 San场 2023/5/23 17:03:12 San场 2023/5/23 17:03:23 San场 2023/5/23 17:03:34 程佳俊 2023/5/23 17:17:49 San场 2023/5/23 20:10:44 你电脑我用用。我找了个java的 San场 2023/5/23 20:11:50 San场 2023/5/23 20:12:11 San场 2023/5/23 20:12:23 San场 2023/5/23 20:12:45 San场 2023/5/23 20:13:03 San场 2023/5/23 20:13:25 对方已成功接收了你发送的离线文件“新建文本文档.txt”(4.39KB)。 程佳俊 2023/5/23 20:30:15 程佳俊 2023/5/23 20:30:16 你已重新下载文件“BER.java”(4.70KB)。 程佳俊 2023/5/23 21:20:01 偷老子东西 San场 2023/5/23 21:21:34 你快回来,出了解决不了的问题 程佳俊 2023/5/23 21:25:04 我的? 程佳俊 2023/5/23 22:27:30 //整数编码 public byte[] berINBianma(int i){ byte[] bytes = ByteBuffer.allocate(4).putInt(i).array();// int 类型的变量 i 转换成 byte 数组 int index = 0; while(index < bytes.length && bytes[index]==0){ index++; }// 寻找数组中第一个非0字节的位置 byte[] result = new byte[bytes.length - index + 2];//创建一个新的数组,数组长度为bytes的非零字节数+2 result[0] = 0x02; //Integer的标识 result[1] = (byte)(bytes.length - index); //长度 System.arraycopy(bytes, index, result, 2, bytes.length - index); //通过arraycopy的方法将bytes数组中非零字节的部分复制到result数组中 return result; }改为python语言编写
以下是将给定 Java 代码转换为 Python 代码的结果:
```
import struct
def berINBianma(i):
bytes = struct.pack('>i', i) # 将 int 类型的变量 i 转换成 byte 数组
index = 0
while index < len(bytes) and bytes[index] == 0:
index += 1 # 寻找数组中第一个非0字节的位置
result = bytearray(len(bytes) - index + 2) # 创建一个新的字节数组,数组长度为bytes的非零字节数+2
result[0] = 0x02 # Integer 的标识
result[1] = len(bytes) - index # 长度
result[2:] = bytes[index:] # 将bytes数组中非零字节的部分复制到result数组中
return bytes(result)
```
在 Python 中,我们使用了 `struct` 模块的 `pack` 函数将整数值转换为字节数组。然后,我们使用 Python 的 `bytearray` 类型来创建新的字节数组,并使用切片操作将原始字节数组的非零字节部分复制到新数组中。此外,我们还使用了 `bytes` 函数来将 `bytearray` 对象转换回 `bytes` 对象。
阅读全文