首页 > 解决方案 > 根据输入百分比拆分列表范围

问题描述

基于输入百分比的拆分列表

假设我的列表是 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

此代码有错误,没有得到想要的结果代码:

import argparse

my_list = list(range(1, 11))
print(my_list)

parser = argparse.ArgumentParser()
parser.add_argument('start_percentage', nargs='?', type=int, default=10)
parser.add_argument('end_percentage', nargs='?', type=int, default=90)

args = parser.parse_args()

start_percent = 100 * int(args.start_percentage / len(my_list))
end_percent = 100 * int(args.end_percentage / len(my_list))

print(start_percent)
print(end_percent)

process_list = my_list[start_percent:end_percent]
print(process_list)

结果:

input: 0, 100
working 

input: 0, 90
not working 
output: []
expected output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

笔记:

输入列表它不是范围,没有排序,也不是整数,(Json 文件有元素列表),我正在拆分以处理作业

标签: pythonpython-3.x

解决方案


看起来您对百分比的解释不正确。要计算出现百分比的索引:

index = (percentage / 100) * length_of_items

因此,90% 将是:

index = (90 / 100) * 10
index = 9

尝试这个:

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

start_percentage = 10
end_percentage = 60

start_percent = int((start_percentage / 100) * len(my_list))
end_percent = int((end_percentage / 100) * len(my_list))

print(start_percent)
print(end_percent)

process_list = my_list[start_percent:end_percent]
print(process_list)

输出:

1
6
[2, 3, 4, 5, 6]

推荐阅读