【问题标题】:Given a list of values remove first occurrence给定一个值列表删除第一次出现
【发布时间】:2016-08-25 18:46:09
【问题描述】:
def drop dest(routes,location):
    for i in range(len(routes)):
        if routes[i] == location:
              routes.remove(routes[i])
    return routes

我正在使用给定列表的函数定义为
routes = [(3,2),(2,4),(5,5),(2,4)],并说我只想删除(2,4) 的第一个出现值。我对如何执行此操作有点困惑,因为我确实删除了该值,但我也删除了给定的其他值。我只想删除第一个给定值。

【问题讨论】:

    标签: python list function


    【解决方案1】:

    这很简单。只需在循环中使用 break 语句。这样循环在第一次满足 if 条件时就停止迭代。使用 remove() 更好,但如果您想在代码中使用循环。这可能就是答案。

    def drop dest(routes,location):
    for i in range(len(routes)):
        if routes[i] == location:
              routes.remove(routes[i])
              break
    return routes
    

    【讨论】:

      【解决方案2】:

      如果那是你的代码并且需要在一个循环中并且只删除一次我会这样做:

      def drop_dest(routes,location):
           flag = 1
           for i in range(len(routes)):
                if routes[i] == location and flag == 1:
                    routes.remove(routes[i])
                    flag = 0
           return routes´
      

      【讨论】:

        【解决方案3】:

        很简单,使用list.remove

        >>> routes = [(3,2),(2,4),(5,5),(2,4)]
        >>> routes.remove((2,4))
        >>> routes
        [(3, 2), (5, 5), (2, 4)]
        

        【讨论】:

        • 我明白这一点,但将我的代码与 for 循环一起使用,因为我的代码删除了所有匹配它的值。你如何修复我的代码以删除第一个值
        • @brian012 因为您的for 循环在第一次删除后继续进行。您可以将break 添加到if 块中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-31
        • 2021-08-02
        • 2021-08-29
        相关资源
        最近更新 更多