Python代码:将列表按比例和数量拆分成子列表
本文介绍了如何使用Python实现将列表按照指定比例和数量拆分成子列表的功能,并提供了相应的示例。
功能介绍
有时候我们需要将一个列表按照指定的比例和数量拆分成多个子列表,以便进行后续处理。例如,将一个包含100个元素的列表按照1:2的比例拆分成三个子列表,其中第一个子列表包含25个元素,第二个子列表包含50个元素,第三个子列表包含25个元素。
本文提供了一个名为split_list
的函数,它可以接收待拆分的列表、每个子列表的元素占比和子列表的数量作为参数,并返回拆分后的子列表组成的列表。
示例
1. 将一个列表按照1:1的比例拆分成两个子列表:
lst = [1, 2, 3, 4, 5, 6]
ratios = [0.5, 0.5]
num_splits = 2
result = split_list(lst, ratios, num_splits)
print(result)
# 输出:
# [[1, 2, 3], [4, 5, 6]]
2. 将一个列表按照2:3:5的比例拆分成三个子列表:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ratios = [0.2, 0.3, 0.5]
num_splits = 3
result = split_list(lst, ratios, num_splits)
print(result)
# 输出:
# [[1, 2], [3, 4, 5], [6, 7, 8, 9, 10]]
代码实现
以下是split_list
函数的实现:
def split_list(lst, ratios, num_splits):
"""
将列表按照指定比例和数量拆分成子列表
:param lst: 待拆分列表
:param ratios: 每个子列表的元素占比,由小数表示的列表
:param num_splits: 子列表的数量
:return: 拆分后的子列表组成的列表
"""
if len(ratios) != num_splits:
raise ValueError("The length of ratios must equal to num_splits.")
total_ratio = sum(ratios)
if total_ratio != 1:
raise ValueError("The sum of ratios must be equal to 1.")
n = len(lst)
result = []
start = 0
for i in range(num_splits):
end = start + int(n * ratios[i])
result.append(lst[start:end])
start = end
return result
总结
本文介绍了如何使用Python实现将列表按照指定比例和数量拆分成多个子列表的功能,并提供了相应的示例。如果你在工作中遇到了类似的问题,欢迎尝试使用split_list
函数解决。