当前位置: 首页 > 知识库问答 >
问题:

无法理解Python3枚举()

施利
2023-03-14

问题:给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。

您可以假设每个输入都有一个精确的解决方案,并且您可以不使用相同的元素两次。

例子:

给定nums=[2,7,11,15],target=9,

因为Nums[0]Nums[1]=2 7=9,返回[0,1]。

class Solution:
def twoSum(self, nums, target):

    lookup={}
    for cnt, num in enumerate (nums):
        if target-num in lookup:
            return lookup[target-num], cnt
        lookup[num]=cnt

使用for循环后,我无法理解这些步骤。我是Python新手,请有人帮助我。

共有2个答案

岳均
2023-03-14

enumerate()方法将计数器添加到iterable,并以枚举对象的形式返回它。然后,可以在for循环中直接使用此枚举对象,或者使用list()方法将其转换为元组列表。

例如,

给予

[(0, 'a'), (1, 'b'), (2, 'c')]
class Solution:
def twoSum(self, nums, target):
    
    # lookup is a dictionary that stores the number and its index 
    # e.g. '{7:1}'
    #     number 7 at index 1 
    lookup={}

    # As explained above cnt and num will receive values one by one along with index.
    for cnt, num in enumerate (nums):
        
        # We look if the number required to be added into the 'num' is present in dictionary
        if target-num in lookup:
            # if value found in lookup then we return the current index along with the index of number found in lookup.
            return lookup[target-num], cnt

        # After every loop insert the current value and its index into the lookup dictionary.
        lookup[num]=cnt

希望,我以你想要的方式回答了你的问题。请在下面评论,如果有什么问题没有回答,我肯定也会尽力回答。

桂梓
2023-03-14

让我通过解释代码的作用以及它如何解决问题来帮助您理解。

我们需要找到两个和为9的数字,为了达到这个目的,我们可以迭代数组中的每个数字,然后看看我们是否已经遇到了一个等于目标数字减去当前数字的数字。如果我们还没有遇到这样的数字,我们将存储当前数字及其对应的索引。

因为我们需要返回索引,所以我们希望能够查找数字-目标对并立即获得索引。该解决方案使用字典存储数字(键)并将索引返回为(值)。

我们迭代每个数字,如果我们之前已经遇到目标数字,我们可以返回当前索引和目标数字的索引,如果我们没有遇到该数字,我们只存储当前数字及其索引。

枚举部分以(id,item)的形式简单地提供一个索引以及正在迭代的数组的值。

class Solution:
    def twoSum(self, nums, target):
        # Here a dictionary is created, which will store value, index as key, value pairs.
        lookup={}
        # For every number in the array, get the index (cnt) and number (num)
        for cnt, num in enumerate (nums):
            # If we find target-num, we know that num + target-num = target
            if target-num in lookup:
                # Hence we return the index of the target-num we stored in the dict, and the index of the current value (cnt)
                return lookup[target-num], cnt
            # Otherwise we store the current number as key with its index as value
            lookup[num]=cnt
 类似资料:
  • 问题内容: 对于没有JS经验的人,您对学习Node.js有什么建议? 我在论坛上阅读了很多有关事件驱动,非阻塞,异步,回调等内容的信息,但我不知道那是什么! 在哪里可以学习基础知识,以便理解所有术语以及将来的node.js? 谢谢! 问题答案: 您提到的概念(事件驱动,非阻塞,异步,回调)不是特定于JavaScript的,在更一般的上下文中理解它们非常有价值。它们都围绕着优雅地处理我们无法控制的资

  • 我试图构建一个通用方法,它将作为参数并处理一些信息。 但不幸的是,它不能像我希望的那样工作。也许你有一些建议来改进我的代码并防止错误。 我在调用: 无法在 我在和调用: 无法解析方法 无法解析方法 我需要在方法中使用的枚举都具有相同的结构。 例如,其中一个看起来像这样: 我知道我可以通过使用 但我的方法不会是通用的。我想对我的任何枚举使用此方法。

  • 问题内容: 我正在使用J2EE Eclipse Indigo,并且有三个这样的类声明: ClassC中的TYPE发生编译错误。它抱怨“枚举无法解析为一种类型”。同时也警告ClassA枚举,它抱怨: 我可以知道导致此代码错误的原因吗? 问题答案: 我有一个类似的问题: 枚举无法解析为类型 Eclipse 改为提供导入。 我去了 首选项-> Java-> Installed_JREs-> Execut

  • 我使用lib jackson-module-kotlin将json字符串解析为对象。 我的问题是,当我将字符串解析为枚举时,当我使用intellij启动时,我有以下堆栈跟踪: 我该怎么办?

  • 每次我运行< code>pip时,都会出现以下警告。 警告:旧脚本包装程序正在调用pip。这将在未来版本的pip中失败。请看https://github.com/pypa/pip/issues/5599寻求解决潜在问题的建议。为了避免这个问题,您可以使用“-m pip”调用Python,而不是直接运行pip。 请帮我理解一下。Pip警告 编辑1。我尝试重新安装pip,但警告仍然存在。此外,我还附上

  • 本文向大家介绍Java(enum)枚举用法详解,包括了Java(enum)枚举用法详解的使用技巧和注意事项,需要的朋友参考一下 概念 enum的全称为 enumeration, 是 JDK 1.5 中引入的新特性。 在Java中,被 enum 关键字修饰的类型就是枚举类型。形式如下: 如果枚举不添加任何方法,枚举值默认为从0开始的有序数值。以 Color 枚举类型举例,它的枚举常量依次为RED:0