在Python中,列表可以通过切片操作按步长提取元素。切片操作的语法是`list[start:stop:step]`,其中:
`start` 是切片的起始索引(包含);
`stop` 是切片的结束索引(不包含);
`step` 是切片的步长,默认为1。
1. 提取列表中每隔一个元素:
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[::2]) 输出: [0, 2, 4, 6, 8]
2. 从列表末尾开始,每隔一个元素提取:
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[::-2]) 输出: [8, 6, 4, 2, 0]
3. 使用负数步长从右向左提取元素,实现列表反转:
fruits = ['苹果', '香蕉', '橙子', '草莓', '葡萄']
print(fruits[::-1]) 输出: ['葡萄', '草莓', '橙子', '香蕉', '苹果']
4. 使用负数步长从后向前每隔一个元素提取:
fruits = ['苹果', '香蕉', '橙子', '草莓', '葡萄']
print(fruits[::-2]) 输出: ['葡萄', '橙子', '苹果']
5. 使用切片操作对图像进行上/下采样(以2倍比例缩放):
import cv2
import numpy as np
def downSample(img):
return img[0:img.shape:2, 0:img.shape:2, :]
def upSample(img):
upImg = np.zeros((2 * img.shape, 2 * img.shape, img.shape))
upImg[0:upImg.shape:2, 0:upImg.shape:2, :] = img
return upImg
6. 按给定长度分割列表:
def cut_list(lists, cut_len):
res_data = []
if len(lists) > cut_len:
for i in range(int(len(lists) / cut_len)):
cut_a = lists[cut_len * i:cut_len * (i + 1)]
res_data.append(cut_a)
last_data = lists[int(len(lists) / cut_len) * cut_len:]
if last_data:
res_data.append(last_data)
else:
res_data.append(lists)
return res_data
以上示例展示了如何使用步长参数从列表中提取元素。您可以根据需要调整`start`、`stop`和`step`的值来提取不同的子列表