在Python中,如果你想在多维列表中按范围查找索引,你可以使用嵌套循环来遍历每个维度,并检查每个元素是否在指定的范围内。以下是一个示例代码,它演示了如何在二维列表中查找所有位于特定范围内的元素的索引:
def find_indexes_in_range(matrix, min_value, max_value):
indexes = []
for i, row in enumerate(matrix):
for j, value in enumerate(row):
if min_value <= value <= max_value:
indexes.append((i, j))
return indexes
# 示例二维列表
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 查找值在2到8之间的元素的索引
indexes = find_indexes_in_range(matrix, 2, 8)
print(indexes) # 输出: [(0, 1), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1)]
如果你在处理大型多维列表时遇到性能问题,可以考虑以下优化措施:
例如,使用NumPy来优化上述查找过程:
import numpy as np
def find_indexes_in_range_numpy(array, min_value, max_value):
mask = (array >= min_value) & (array <= max_value)
return np.argwhere(mask)
# 示例二维NumPy数组
array = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# 查找值在2到8之间的元素的索引
indexes = find_indexes_in_range_numpy(array, 2, 8)
print(indexes) # 输出: [[0 1] [1 0] [1 1] [1 2] [2 0] [2 1]]
使用NumPy可以显著提高处理大型数组的效率。
领取专属 10元无门槛券
手把手带您无忧上云