[英]How can I use an if-else condition inside a list comprehension to overwrite an existing list?
[英]How do I use list comprehension with an if-else statement to print if the action has been completed or not?
所以我有一個代碼要求找到驅動程序的名稱,如果它存在則從主驅動程序詳細信息列表中刪除該列表。 我使用嵌套列表來實現這一點。 刪除列表后,我希望顯示一條消息,提示“記錄已刪除”或“找不到記錄”。
driver_details=[["Ken Block","55","Hoonigan","Mustang"], ["Ken Miles","48","Ford","Ford GT"]]
def delete_driver():
"""This function is used to delete driver details
by entering the driver name"""
global driver_details
driver_name=input("Enter driver name: ")
if driver_name in driver_details:
driver_details=[x for x in driver_details if x[0] not in driver_name]
print("Driver details deleted")
else:
print("Record Not Found")
print(driver_details)
options()
這似乎對我不起作用。
但是當我嘗試這個時:
"""This function is used to delete driver details
by entering the driver name"""
global driver_details
driver_name=input("Enter driver name: ")
driver_details=[x for x in driver_details if x[0] not in driver_name ]
print("Driver details deleted")
print(driver_details)
options()
它確實刪除了記錄。
我希望答案打印為 Record Deleted 但我一直收到 Record not found 即使驅動程序的名稱確實存在。 我怎么能為此添加 if 語句?
你的代碼對我來說工作得很好。 但是,有 2 個更正:
1.你必須展平嵌套字典driver_details
來簽in
屬性
driver_name in drivers_details
應該是driver_name in driver_details
。 driver_details=[["Ken Block","55","Hoonigan","Mustang"], ["Ken Miles","48","Ford","Ford GT"]]
def delete_driver():
"""This function is used to delete driver details
by entering the driver name"""
global driver_details
driver_name=input("Enter driver name: ")
if driver_name in [item for sublist in driver_details for item in sublist]: #flattened nested list
driver_details=[x for x in driver_details if x[0] not in driver_name]
print("Driver details deleted")
else:
print("Record Not Found")
print(driver_details)
這是從driver_details
中刪除的方法:
driver_details2 = [dd for dd in driver_details if dd[0] != driver_name]
driver_details[:] = driver_details2 # Overwrite original list.
您的代碼還有其他一些問題(如發布的那樣),例如drivers_list
變量。 您可以這樣定義它:
drivers_list = [dd[0] for dd in driver_details]
def delete_driver(): """此 function 用於通過輸入驅動程序名稱刪除驅動程序詳細信息""" global driver_details driver_name=input("Enter driver name: ") if driver_name in [item for sublist in driver_details for item in sublist ]: #flattened nested list driver_details=[x for x in driver_details if x[0] not in driver_name] print("Driver details deleted") else: print("Record Not Found") print(driver_details) Followdef delete_driver(): """這個 function 用於通過輸入驅動程序名稱來刪除驅動程序詳細信息""" global driver_details driver_name=input("Enter driver name: ") if driver_name in [item for sublist in driver_details for item in sublist]: #flattened nested list driver_details=[x for x in driver_details if x[0] not in driver_name] print("Driver details deleted") else: print("Record Not Found") print(driver_details)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.