2016-11-10 3 views
0

Может ли мой текущий код работать для этой функции? Вот цель, которую я пытаюсь сделать сначала, а затем моя текущая попыткаПоиск и возврат значения по индексу местоположения в списке

Посмотрите на список значений, 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 

Спасибо любая помощь ценится

+0

, что это такое, что вы пытаетесь сделать именно ? –

+0

Это определенно не работает, поскольку вы переназначаете 'xs = []', поэтому цикл 'for' никогда не будет введен. Похоже, у вас есть несколько слоев цикла. – AChampion

ответ

1

Вы, кажется, очень смущен о том, что вы пытаетесь сделать ...

Так что, если я правильно понимаю, вы хотите для возврата xs[index], если он существует иначе response, простой способ сделать это в соответствии с принципом EAFP:

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

Мне нравится, как мы оба понимали совершенно противоположные вещи :-) –

+1

Да, я сдался, пытаясь интерпретировать код, учитывая степень замешательства, и просто попытался ответить на английский вопрос. Но мы пришли к одной и той же схеме. – AChampion

+0

Нельзя винить вас в этом. –

1

Много вопросов здесь, давайте разберем их по сегментам:

  • Вы переназначить имя списка вы передаете в результате чего эффективно потерять список вы ищете в:

    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