我有一個串列 ["ABC", "JAVA", "Python", "user", "CODE"] 并且我希望函式列印出 ["Python", "user"]。
這是我到目前為止的進展:
def no_upper(my_list : list):
new_list = my_list
for word in my_list:
if word.isupper():
my_list.remove(word)
return new_list
if __name__ == "__main__":
my_list = ["ABC", "JAVA", "Python", "user", "CODE"]
new_list = no_upper(my_list)
print(new_list)
uj5u.com熱心網友回復:
如果您的目標是“洗掉”完全以大寫字母書寫的單詞:
lst = ["ABC", "JAVA", "Python", "user", "CODE"]
[x for x in lst if x != x.upper()]
輸出
['Python', 'user']
uj5u.com熱心網友回復:
- 將您的字串括在引號中。
- 您的函式試圖修改
my_list而不是實際構建您的new_list. 只需構建新串列并回傳它,而無需嘗試從輸入中洗掉專案——修改您正在迭代的串列通常會產生意外/錯誤的結果,即使它可以做到這一點,也沒有充分的理由搞砸以這種方式處理呼叫者的資料。
>>> def no_upper(my_list: list) -> list:
... return [word for word in my_list if not word.isupper()]
...
>>> no_upper(["ABC", "JAVA", "Python", "user", "CODE"])
['Python', 'user']
uj5u.com熱心網友回復:
嘗試使用這樣的串列:
my_list = ["ABC", "Java", "Python"]
除非 Python 將raisean UnboundLocalError,因為ABC沒有引號 ( '') 或雙引號 ( "") 被決議為變數,但ABC您的程式中沒有變數。
您還可以使用行內語法來解決您的問題,如下所示:
def noUpper(l: list):
return [x for x in list if not x.isupper()]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/370827.html
上一篇:回傳結構會導致亂碼
下一篇:如何讓我的串列讀取某些值?
