Вставка строки в список только с использованием метода append - PullRequest
0 голосов
/ 11 ноября 2019

В данный момент я борюсь с вопросом, и мне было интересно, если кто-то может указать мне и показать, где я иду не так. Мне нужно вставить строку в список только с помощью метода добавления в указанной позиции, указанной в insert_position. Вот мой код:

str1_list = ['one', 'three', 'four']

def insert_value(my_list, value, insert_position):

       new_list = []
       for i in range(len(my_list)):
             if i < insert_position:
                 new_list.append(my_list[i])
             elif i == insert_position:
                 new_list.append(my_list[i])
             else:
                 new_list.append(my_list[i-1])

       return new_list

print(str1_list, 'two', 1)

Вывод должен быть:

['one', 'two', 'three', 'four']

Я знаюЗначение параметра должно быть где-то, но не может понять, где. Любая помощь будет принята с благодарностью.

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 ноября 2019

Вы можете просто добавить новое значение с помощью slice, например,

>>> def insert_value(l, value, pos):
...     l[pos:pos] = [value]
...     return l # return is not required, since you want to modify the list ?
... 
>>> l = ['one', 'three', 'four']
>>> insert_value(l, 'two', 1)
['one', 'two', 'three', 'four']
>>> l
['one', 'two', 'three', 'four']
2 голосов
/ 11 ноября 2019

У вас есть несколько ошибок (не используется value, переданный в функцию, не вызывается функция, ненужное условие). Сравните ваш код с этим:

str1_list = ['one', 'three', 'four']
def insert_value(my_list, value, insert_position):
    new_list = []
    for i in range(len(my_list)):
        if i == insert_position:
            new_list.append(value)
        new_list.append(my_list[i])
    return new_list
print(insert_value(str1_list, 'two', 1))

Вывод:

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