Passing Python slice syntax around to functions

前端 未结 3 822
青春惊慌失措
青春惊慌失措 2020-12-16 12:18

In Python, is it possible to encapsulate exactly the common slice syntax and pass it around? I know that I can use slice or __slice__ to emulate sl

3条回答
  •  星月不相逢
    2020-12-16 12:53

    In short, no. That syntax is only valid in the context of the [] operator. I might suggest accepting a tuple as input and then pass that tuple to slice(). Alternatively, maybe you could redesign whatever you're doing so that get_important_values() is somehow implemented as a sliceable object.

    For example, you could do something like:

    class ImportantValueGetter(object):
        def __init__(self, some_list, some_condition):
            self.some_list = some_list
            self.some_condition = some_condition
    
        def __getitem__(self, key):
            # Here key could be an int or a slice; you can do some type checking if necessary
            return filter(self.some_condition, self.some_list)[key]
    

    You can probably do one better by turning this into a Container ABC of some sort but that's the general idea.

提交回复
热议问题