Slicing out a specific from a list

后端 未结 2 1354
逝去的感伤
逝去的感伤 2021-01-26 11:58

I have one list and I want to print out all elements of it but skip one specific.

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

I want to print out:

1,3         


        
2条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-01-26 12:41

    Just slice on both sides and concatenate:

    def skip_over(lst, i):
        return lst[:i] + lst[i + 1:]
    
    skip_over([1, 2, 3, 4, 5], 1) # [1, 3, 4, 5]
    

    If you want to skip over all occurrences of a value, filter with a list comprehension:

    def skip_all(lst, v):
        return [x for x in lst if x != v]
    
    skip_all([1, 2, 3, 2, 4, 5], 2) # [1, 3, 4, 5]
    

    If you want to skip over the first occurrence of a value, then use index to get its index:

    def skip_first(lst, v):
        try:
            i = lst.index(v)
        except ValueError:
            # value not in list so return whole thing
            return lst
        return lst[:i] + lst[i + 1:]
    
    skip_first([1, 2, 3, 2, 4, 5], 2) # [1, 3, 2, 4, 5]
    

提交回复
热议问题