Изменение (замена) значения в списке без использования диапазона (len ()) - PullRequest
0 голосов
/ 02 августа 2020

Моя цель - изменить значение элементов 3 и 4 на 4 и 3, и я написал функцию, которая принимает в качестве аргументов список, первое число и второе число:

def pre9(the_list, value_to_replace, the_replacing_value):

    for i in the_list:
        if i == value_to_replace:
            value_to_replace = the_replacing_value
        elif i == the_replacing_value:
            the_replacing_value = value_to_replace

    return the_list

Я тогда назначьте тестовый пример переменной и затем распечатайте его:

test_pre9 = pre9 ([1,2,3,4,5,7,3,4], 3, 4) print (test_pre9)

Результат: [1,2,3,4,5,7,3,4] Я ожидаю, что это будет: [1,2,4,3,5,7,4,3]

Я в течение длительного времени go написал код, который выполняет эту задачу:

def uppgift_9():
    the_list = [3,5,8,9,4,5]

    for i in range(len(the_list)-1):
        temp = the_list[3]
        the_list[3] = the_list[4]
        the_list[4] = temp
    return the_list

Но я читал во многих местах, что использование range (len ()) не является "pythoni c", и можно делать что угодно, не используя его.

Кто-нибудь знает, почему мой код не работает?

1 Ответ

0 голосов
/ 02 августа 2020

Фактически вы не меняете элемент в списке, попробуйте следующее:

def pre9(the_list, value_to_replace, the_replacing_value):
    for i, value in enumerate(the_list):
        if value == value_to_replace:
            the_list[i] = the_replacing_value
        elif value == the_replacing_value:
            the_list[i] = value_to_replace
    return the_list

Теперь в списке фактически элементы будут изменены на то, что вы хотели. Enumerate () возвращает индекс и значение элемента в списке, это очень удобно! И действительно, диапазон (len ()) не очень похож на pythoni c и обычно используется, когда люди переходят с других языков, таких как Java, C# et c. Использование enumerate () - это правильный способ 'pythoni c' для достижения этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...