Python удалить два элемента без петли - PullRequest
1 голос
/ 09 апреля 2020

У меня есть список

A = [A, B, #, C]

Используя a.remove('#'), я могу удалить хэштег, как я могу удалить и хэштег, и элемент раньше без al oop, учитывая, что я не знаю, что Элемент перед хэштегом есть. Как я могу это сделать?

Ответы [ 4 ]

2 голосов
/ 09 апреля 2020

Используйте list.index, чтобы найти позицию хэштега, а затем используйте два среза, чтобы удалить два элемента.

pos = A.index('#')
A = A[:pos - 1] + A[pos + 1:]

A[:pos - 1] дает все, вплоть до элемента перед хэштег. A[pos + 1:] выдает все после хэштега, затем вы можете объединить эти два в один список

В качестве альтернативы обратитесь к решению @ usr2564301 в комментариях, которое удаляет его на месте (без необходимости переназначать A): A[pos-1:pos+1] = [] с использованием того же pos сверху

Примечание : при этом предполагается, что хэштег не является первым элементом в списке, в противном случае произойдет непредвиденное поведение (см. комментарий @ sertsedat ниже)

1 голос
/ 09 апреля 2020

Если вы уверены, что элемент находится в списке, вы можете использовать index, чтобы получить позицию в списке, а затем пару pop, чтобы удалить элементы (при условии, что если хэштег является первым из список, вы просто хотите удалить это):

a= ['A', 'B', '#', 'C']
index = a.index('#')
# if the element is not in the list, you will get a ValueError!
a.pop(index)
if index > 0:
    a.pop(index-1)

print(a)

# output
['A', 'C']

Если вы не уверены, что элемент находится в списке, вы должны сначала проверить, если он есть, чтобы избежать получения ValueError:

a= ['A', 'B', '#', 'C']
if '#' in a:
    index = a.index('#')   
    a.pop(index)
    if index > 0:
        a.pop(index-1)

print(a)

# output
['A', 'C']
1 голос
/ 09 апреля 2020

Вам нужно знать индекс хэштега.

A = ['A', 'B', '#', 'C']
hashtag_index = A.index('#')
# here I am removing the hashtag
A.pop(hashtag_index)
# here the element before
if hashtag_index != 0:
    A.pop(hashtag_index - 1)

# you can also use del in one line (doesn't work for 0th index)
# del A[hashtag_index - 1:hashtag_index+1]

print(A)
# ['A', 'C']

0 голосов
/ 09 апреля 2020

один способ сделать это:

A = ['A', 'B', '#', 'C']

print(A) #output = ['A', 'B', '#', 'C']

index = A.index("#")
A.pop(index)
A.pop(index-1)

print(A) #output = ['A', 'C']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...