使用python只更新队列中第一次出现的对象而不会中断

卡曼

我在 python 中创建了一个函数,它将更改对象第一次出现的优先级,但是我无法修复它,因此它只能在不使用中断的情况下第一次出现。在我下面的代码中,我使用了 break 并且它按预期工作,但我不想使用它。

    def update_priority(self, object, priority):

for i in range(len(self._queue)):
    if object == self._queue[i].get_item():
        # checking object already has that priority
        if priority == self._queue[i].get_priority():
            # dont change if it has the priority
            pass
        # if the object does not have that priority set to new
        else:
            self._queue[i].set_priority(pri)
            break
    else:
        pass
同步器

听起来您还想学习如何减少代码长度。一个经验法则是首先专注于使您的代码清晰简洁,这样您就可以尝试找出简化结构的方法。例如,您可以重组和删除冗余分支。你的许多案例只是通过。另外,是的,大学课程说break语句不是很好。为清楚起见,您可能希望使用条件变量来结束循环。在这种情况下,您实际上并不需要这样做,但另一种方法是将代码包装在一个函数中并通过returning绕过循环的其余部分,您已经使用了一个函数,因此您可以从该函数返回如果您所做的只是更新一项的优先级(然后退出)。也许您想返回一个状态代码,指示是否找到了一个项目。TrueFalse)。

def update_priority(self, object, priority):
    # check all items in the queue (you do not require the index.)
    # the entry is stored in "entry"
    for entry in self._queue:
        # if you find the object and its priority needs an update
        if object == entry.get_item() and priority != entry.get_priority():
            # set the priority
            entry.set_priority(priority)
            # return true for success, you found the object and updated it
            return True
    """ If you arrive at this line, the object didn't exist or 
        it didn't need an update (if you need to distinguish between "object not found" and 
       "object found but didn't update," use an extra flag or nest the != entry.get_priority as you did before"""
    return False

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用对象作为查找表:第一次调用后值不会更新

来自分类Dev

QString只替换第一次出现

来自分类Dev

只替换第一次出现的单词

来自分类Dev

Jquery如何只找到第一次出现

来自分类Dev

如何只匹配行中第一次出现的空间

来自分类Dev

Jquery:只选择树中第一次出现的类

来自分类Dev

在while循环中只运行一次,而不会中断循环

来自分类Dev

第一次尝试在asp.net中不会更新标签文本。为什么?

来自分类Dev

动画仅在WPF中第一次出现

来自分类Dev

在列表中查找第一次出现

来自分类Dev

删除Prolog中第一次出现的元素

来自分类Dev

替换每行中的第一次出现

来自分类Dev

SQL识别列表中的第一次出现

来自分类Dev

删除Prolog中第一次出现的元素

来自分类Dev

列出样本中的第一次出现

来自分类Dev

动画仅在WPF中第一次出现

来自分类Dev

使用setInterval第一次出现

来自分类Dev

使用SharpSVN找到线的第一次出现?

来自分类Dev

使用setInterval第一次出现

来自分类Dev

使用标准查找每年第一次出现

来自分类Dev

如何反复删除字符串中第一次出现的python?

来自分类Dev

如何使用EGREP在行中搜索模式的第一次出现

来自分类Dev

使用R中的匹配函数查找“第一次出现”

来自分类Dev

使用 Shell 脚本在 URL 中查找 (/) 的第一次出现

来自分类Dev

如何只返回第一次出现的ID与猫鼬?

来自分类Dev

正则表达式只正确地拉第一次出现

来自分类Dev

如何只返回第一次出现的ID与猫鼬?

来自分类Dev

Swift Scroll to UITextField 通过 UiscrollView 只在第一次出现错误

来自分类Dev

正则表达式只捕获括号内的第一次出现