как проверить, где находится элемент в списке - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь проверить, где в списке находится элемент, чтобы я мог заменить его в этой позиции в отдельном списке.

Я пытался сделать это, используя .index, но это работает только тогда, когда выполняется в обратном порядке.

variable = input("enter a number")
list1 = ['1','2','3','4']
list2 = ['0','0','0','0']
L = 0
L = list1.index(variable)
list2.pop(L)
list2.insert(L, variable)
print(list1)
print(list2

я ожидал, что результат будет:

['1','2','3','4']
['1','0','3','0']

, но результат был:

['1','2','3','4']
['3','0','0','0']

Ответы [ 2 ]

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

Оператор del Существует способ удалить элемент из списка по его индексу вместо значения: оператор del. Это отличается от метода pop (), который возвращает значение. Оператор del также можно использовать для удаления срезов из списка или очистки всего списка (что мы делали ранее путем назначения пустого списка срезу) ссылка

Код:

list1 = ['1', '2', '3', '4']
list2 = ['0', '0', '0', '0']

variable = '1'
idx = list1.index(variable)

del list1[idx]
list2[idx] = variable

print(f"list1: {list1}")
print(f"list2: {list2}")

Вывод:

list1: ['2', '3', '4']
list2: ['1', '0', '0', '0']

Кроме того, вы можете удалить фрагмент list с del:

>>> list1 = ['1', '2', '3', '4']
>>> del list1[2:3]
>>> list1
['1', '2', '4']


Если вы используете insert(), вы получите это:

list.insert (i, x) Вставьте предмет в заданную позицию. Первый аргумент - это индекс элемента, перед которым нужно вставить, поэтому a.insert (0, x) вставляет в начало списка, а a.insert (len (a), x) эквивалентен a.append (Икс). ссылка

Код:

list1 = ['1', '2', '3', '4']
list2 = ['0', '0', '0', '0']

variable = '1'
idx = list1.index(variable)

del list1[idx]
list2.insert(idx, variable)

print(f"list1: {list1}")
print(f"list2: {list2}")

Выход:

list1: ['2', '3', '4']
list2: ['1', '0', '0', '0', '0']

Реализуйте это с помощью pop():

list.pop ([i]) Удалите элемент в указанной позиции в списке,и верни это. Если индекс не указан, a.pop () удаляет и возвращает последний элемент в списке. (Квадратные скобки вокруг i в сигнатуре метода означают, что параметр является необязательным, а не то, что вы должны вводить квадратные скобки в этой позиции. Вы часто будете видеть эту запись в Справочнике по библиотеке Python.) reference

Код:

def do_some_stuff(variable):
    list1 = ['1', '2', '3', '4']
    list2 = ['0', '0', '0', '0']

    idx = list1.index(variable)
    list2[idx] = list1.pop(idx)

    print(f"list1: {list1}")
    print(f"list2: {list2}")


if __name__ == '__main__':
    do_some_stuff(variable='1')

Выход:

list1: ['2', '3', '4']
list2: ['1', '0', '0', '0']
0 голосов
/ 04 ноября 2019

.index не проблема, .pop / .insert - это.

Вместо:

list2.pop(L)
list2.insert(L, guess)

do:

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