python - 根据输入百分比拆分列表范围
问题描述
基于输入百分比的拆分列表
假设我的列表是 [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 文件有元素列表),我正在拆分以处理作业
解决方案
看起来您对百分比的解释不正确。要计算出现百分比的索引:
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]
推荐阅读
- angularjs - 根据条件angularjs显示视图输入字段
- android - RadioButton 状态和按钮验证
- c# - Office365 - 使用 C# 列出用户
- python-3.x - 使用二维嵌套字典中的 if/else 语句进行列表理解循环
- node.js - nodejs到mosquitto raspberry pi pub sub不起作用
- java - PostgreSQL - 找不到适用于 JDBC 的驱动程序
- javascript - AJAX - JSON 未定义(jQuery、NodeJS)
- angular - 使用插值设置 routerLink
- symfony - Symfony 不验证实体
- python - pandas 0.23.1 AttributeError:“模块”对象没有属性“滚动”