сокращение списка с помощью pop () в python - PullRequest
0 голосов
/ 29 марта 2020

Я написал код со списком приглашенных, но, поскольку я выталкиваю незваных гостей из списка, для l oop перестает работать с индексом 3 и вместо первых двух человек в списке, первые четыре получают приглашение , пожалуйста, укажите, что не так. Спасибо

invitees = ["name1","name2","name3","name4","name5","name6"]
print(invitees)
print("Sorry guys change in plans, cannot invite all of you guys")
#using pop() to invite only two from the list of invitees
for invitee in invitees:
    if len(invitees)>2:
        popped_invitee = invitees.pop()
        print(f"Sorry! {popped_invitee.title()}, you are uninvited")
        print(invitees)
#the univited get a message and also the invited
for invitee in invitees:
    print(f"hey! {invitee.title()}, you are still invited")

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Не пытайтесь изменить списки, по которым вы сейчас перебираете! Так лежит безумие. Посмотрите этот ответ какого-нибудь невероятно умного и красивого плаката , почему это плохая идея: -)

Вы действительно можете достичь того же результата с чем-то вроде:

while len(invitees) > 2:
    popped_invitee = invitees[0]
    print(f"Sorry! {popped_invitee.title()}, you are uninvited")
    invitees = invitees[1:]
print(invitees) # should now have two or fewer items

или, что лучше, поскольку вы изменяете список только один раз:

if len(invitees) > 2:
    popped_invitees = invitees[:-2]
    invitees = invitees[-2:]
    for popped_invitee in popped_invitees:
        print(f"Sorry! {popped_invitee.title()}, you are uninvited")
print(invitees) # should now have two or fewer items
0 голосов
/ 29 марта 2020
In [36]: a = [1,2,3,4,5]                                                                                                                                                                                           

In [37]: a.pop(0)                                                                                                                                                                                                  
Out[37]: 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...