簡體   English   中英

打印列表中的所有字符串元素,除了 Python 中的一個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM