[英]Printing all string elements in list except for one in Python
所以我正在制作一個隨機安排 NHL 球隊的日程安排程序。 我有一份來自大西洋賽區的小隊名單:
atl_div = ["BOS", "BUF", "DET", "FLA"]
當用戶輸入團隊縮寫時,他們會打印給他們的元素,減去列表中的團隊,例如,如果我輸入BUF
,用戶將返回:
BOS
DET
FLA
我試過
input_team = input("Enter a team abbrev.:")
if input_team == "BUF":
print(atl_div[~0])
但這行不通,因為~
用於數字而不是列表。
我不得不承認我是一個新手程序員,所以如果我的問題聽起來是這樣的話,我深表歉意。 我們都從某個地方開始:)
感謝您的任何幫助,如有必要,請隨時詢問更多詳細信息!
input_team = input('Enter a team abbrev.:')
print('\n'.join([team for team in atl_div if team != input_team]))
編輯:更新打印格式
一個簡單的list
推導式將生成一個沒有不需要的元素的新list
:
print(*[team for team in atl_div if team != input_team], sep="\n")
這會臨時創建一個新list
,其中包含除等於input_team
元素之外的所有元素。 *
解包為print
順序位置參數,並且sep="\\n"
告訴print
在打印時在每個元素之間放置一個換行符。 如果您想從list
永久刪除有問題的元素,您可以改為:
atl_div.remove(input_team)
print(*atl_div, sep="\n")
請注意,如果沒有完全匹配input_team
條目,則行為會有所不同; 如果不存在匹配的元素, remove
將拋出異常,並且如果list
有多個值的實例,它只會刪除一個副本。 list
推導式將默默地刪除該值的所有副本,並且不關心是否沒有任何副本。
有兩種簡單的方法可以做到這一點:
最簡單的方法是逐一瀏覽列表,並打印任何不是您明確希望不選擇的字符串的字符串。
for team in atl_div:
if input_team != team:
print(team)
一種可以說是更 Pythonic 的做同樣事情的方式,雖然效率不高(像這樣的小列表效率並不那么重要)你可以做一個列表理解,並制作一個列表。 這樣,您將創建一個新列表,其中沒有您正在尋找的團隊。
included_teams = [x for x in atl_div if x != input_team]
然后,您可以逐個元素地打印出該列表:
for team in included_teams:
print(included_teams)
這可以簡化為以下相同問題的可讀性稍差的版本:
for team in [x for x in atl_div if x != input_team]:
print(team)
在這兩種解決方案中的任何一個中,您都可以更加寬容,並將.upper()
類的字符串轉換應用於input_team
以允許它,以便輸入buf
的用戶仍然可以獲得預期的列表, BOS, DET, FLA
。
有了第一個答案,可以這樣做:
for team in atl_div:
if input_team.upper() != team:
print(team)
如果你想使用熊貓,你可以這樣做:
import pandas as pd
aa = pd.Series(["BOS", "BUF", "DET", "FLA"])
aa[aa != 'BOS'].tolist()
# ['BUF', 'DET', 'FLA']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.