用Python的方法获取参数中定义的列表的范围?

v1uwarro  于 2023-02-14  发布在  Python
关注(0)|答案(1)|浏览(127)

我强迫start index equant到end index来得到整个列表,但是它不够灵活,我想知道是否有一个更直观/Python或更好的方法来定义这样的函数?

@click.command()
@click.option("-r", "--range", nargs=2, type=int, help="the start & end index")
def main(range):
    start, end = range
    elements = all_elements[start-1:] if start==end else all_elements[start-1:end]

编辑:我将代码从elements = all_elements更改为elements = all_elements[start-1:],这样当调用python main.py 1 100时,将返回前100个项目,python main.py 5 5返回从第5个开始的所有项目。

lmyy7pcs

lmyy7pcs1#

通过为end参数使用默认值,可以使代码更加灵活。可以将其设置为all_elements的长度,这样,如果只提供一个值,它将选择从该索引开始的所有元素:

@click.command()
@click.option("-r", "--range", nargs=2, type=int, help="the start & end index")
def main(range):
    start, end = range
    end = len(all_elements) if end is None else end
    elements = all_elements[start-1:end]

或者,您也可以提供--all选项来选择所有元素:

@click.command()
@click.option("-r", "--range", nargs=2, type=int, help="the start & end index")
@click.option("-a", "--all", is_flag=True, help="select all elements")
def main(range, all):
    if all:
        elements = all_elements
    else:
        start, end = range
        end = len(all_elements) if end is None else end
        elements = all_elements[start-1:end]

相关问题