Python 无法理解将项目从列表移动到空列表

Python 无法理解将项目从列表移动到空列表,python,Python,在下面的示例代码中,我不理解为什么在我的sent_message()中,我从smsg获得了输出,而不是txt_msgs[0],也不理解为什么我的sent_msg列表仍然为空 txt_msgs = ['Mr Johnson, your new Cornwell Banks credit card is waiting for you at 13 High Street.', 'Boarding for your flight 320-YBO starts 12.11.2018 at 3:30pm.

在下面的示例代码中,我不理解为什么在我的sent_message()中,我从smsg获得了输出,而不是txt_msgs[0],也不理解为什么我的sent_msg列表仍然为空

txt_msgs = ['Mr Johnson, your new Cornwell Banks credit card is waiting for you at 13 High Street.', 'Boarding for your flight 320-YBO starts 12.11.2018 at 3:30pm. Enjoy your flight, Fair Airlines.', 'Booking confirmation: 4445789-YY. Millington Hotel is expecting you on 22.12.2018. Thank you for your order!']

sent_msg = []

def show_messages(txt_msgs):
    for msg in txt_msgs:
        print(f"\n{msg}")

def sent_messages(txt_msgs):
    for msg in txt_msgs:
        smsg = txt_msgs.pop()
        sent_msg.append(smsg)
        print(f"\n{smsg}")
        
#print(txt_msgs)
print(sent_msg)
#show_messages(txt_msgs)
sent_messages(txt_msgs)
以下是我得到的输出:

 []

Booking confirmation: 4445789-YY. Millington Hotel is expecting you on 22.12.2018. Thank you for your order!

Boarding for your flight 320-YBO starts 12.11.2018 at 3:30pm. Enjoy your flight, Fair Airlines.
[Finished in 0.0s]
试试这个:

sent_msg = []
txt_msgs= ["Hey"]
def show_messages(txt_msgs):
    for msg in txt_msgs:
        print(f"\n{msg}")

def sent_messages(txt_msgs):
    for msg in txt_msgs:
        smsg = txt_msgs.pop()
        sent_msg.append(smsg)
        print(f"\n{smsg}")
        
        
#print(txt_msgs)
#Here it's empty 
print(sent_msg)
#show_messages(txt_msgs)
sent_messages(txt_msgs)
#Here the message is append to the list
print(sent_msg)
问题是,在向列表中添加任何内容之前,您已打印并发送消息,因此列表为空

请尝试以下操作:

sent_msg = []
txt_msgs= ["Hey"]
def show_messages(txt_msgs):
    for msg in txt_msgs:
        print(f"\n{msg}")

def sent_messages(txt_msgs):
    for msg in txt_msgs:
        smsg = txt_msgs.pop()
        sent_msg.append(smsg)
        print(f"\n{smsg}")
        
        
#print(txt_msgs)
#Here it's empty 
print(sent_msg)
#show_messages(txt_msgs)
sent_messages(txt_msgs)
#Here the message is append to the list
print(sent_msg)

问题是,在向列表中添加任何内容之前,您已打印发送消息,因此列表为空

这是因为在向列表中添加数据的实际方法调用之前调用了print sentmsg。

这是因为在向列表中添加数据的实际方法调用之前调用了print sentmsg。

这些更改确实做了一些改进,但是我认为for循环会打印txt_msgs中的所有消息,但它只打印最后一条消息。我仍然不明白为什么,但当我取消注释show_messages()时,该函数打印所有3条消息,我希望pop函数弹出所有3条消息并追加所有3条消息。一旦我删除了发送的返回消息,我得到了我期望的输出这些更改确实取得了一些改进,然而,我认为for循环会打印txt_msgs中的所有消息,但它只打印最后一条消息。我仍然不明白为什么,但是当我取消注释show_messages()函数print all 3 messages时,我希望pop函数能够弹出所有3条消息并追加所有3条消息。一旦我删除了返回发送的消息,我就得到了我期望的输出