我有一個遵循以下格式的串列:
message = [sender, receiver, message_name]
我必須遍歷存盤在我的message_stack串列中的所有訊息,并評估每條訊息的名稱是否有效(即它的名稱是否在 valid_names 串列中)
目前我有:
for message in message_stack:
if message[2] not in valid_names:
print("Error : wrong name.")
迭代器訊息有一個相關的名稱,但是有沒有辦法讓它message[2]更清楚地表明它是一個訊息名稱?
謝謝 !
uj5u.com熱心網友回復:
您想使用可迭代解包:
for sender, receiver, message_name in message_stack:
if message_name not in valid_names:
print("Error : wrong name.")
# do some more stuff with sender, receiver....
術語說明,message不是“迭代器”。迭代器在 Python 中具有特定的含義(iter當您執行時回傳的含義iter(iterable)ie iterator = iter(iterable))。你可以稱它為“回圈變數”
uj5u.com熱心網友回復:
您可以使用:
for sender, receiver, message_name in message_stack:
if message_name not in valid_names:
print("Error : wrong name.")
如果您不使用它們,您甚至可以省略發送者和接收者:
for _, __, message_name in message_stack:
if message_name not in valid_names:
print("Error : wrong name.")
uj5u.com熱心網友回復:
使用星號解包獲取最后一個元素:
for *_, message_name in message_stack:
if message_name not in valid_names:
print(some_thing)
或者namedtuple在創建串列時考慮使用:
from collections import namedtuple
Message = namedtuple('Message', ['sender', 'receiver', 'name'])
message_stack = # a list of Message object
for message in message_stack:
if message.name not in valid_names:
print(some_thing)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/477839.html
上一篇:在掃描儀中回圈ifelse
