【问题标题】:Finding and returning the value at location index in a list在列表中的位置索引处查找并返回值
【发布时间】:2016-11-10 21:23:50
【问题描述】:

我当前的代码可以用于这个功能吗?这是我首先尝试做的目标,然后是我当前的尝试

查看值列表,xs。在位置索引处查找并返回值。当索引对 xs 无效时,返回响应。

当前代码:

def get(xs, index, response=None):
    xs=[]
    i=0
    for i in xs:
        try:
            while i<len(xs):
                index=xs.index(xs,index)
                index = i
            return i 
        except:
            return response

感谢您的任何帮助

【问题讨论】:

  • 你到底想做什么?
  • 这绝对行不通,因为您要重新分配xs = [],因此永远不会进入for 循环。看起来你有很多层循环。

标签: list python-3.x return location


【解决方案1】:

你似乎对你想要做什么感到很困惑......

所以如果我理解正确你想返回xs[index],否则response,遵循EAFP原则的简单方法是:

def get(xs, index, response=None):
    try:
        return xs[index]
    except IndexError:
        return response

【讨论】:

  • 我喜欢我们都理解完全相反的事情:-)
  • 是的,考虑到混乱程度,我放弃了尝试解释代码,只是尝试回答英语问题。但我们想出了相同的模式。
  • 这不能怪你。
  • 谢谢大家,我确实对如何实现目标感到困惑
【解决方案2】:

这里有很多问题,让我们分段分解:

  • 您重新分配了您传入的列表的名称,从而实际上丢失了您正在搜索的列表:

    xs=[]
    

    没必要,那行可以去掉。

  • 您为i(让人想起C)分配一个值,该值在循环开始时被覆盖,而您在不需要时使用for-loop

    i=0
    for i in xs:
    

    同样,这也可以删除。

  • 您将try-except 与裸except 一起使用;您应该指定可以在此处引发的异常ValueError

    try:
       # content
    except ValueError:
        return response
    
  • 您正在使用while 循环获取index(并指定start),重新分配它,然后返回它;这没有多大意义。你真的在寻找return xs.index(index)

    同样,你真的可以用 xs.index(index) 替换所有代码

总而言之,您的函数可能如下所示:

def get(xs, index, response=None):
    try:
        return xs.index(index)
    except ValueError:
        return response

【讨论】:

    猜你喜欢
    • 2013-03-24
    • 2021-05-30
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2018-08-25
    • 2021-10-19
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多