這是一個清單,n_list
n_list = [2, 4, 4, 5, 2, 1, 7, 1, 9]
問題陳述:
我想從串列理解中獲得結果,但輸出應該只是值,而不是串列。基本上,無需為其撰寫單獨的 for 回圈即可得到結果。
簡單的解決方案,但不是我想要的:
如果我必須只列印結果,我可以這樣做,使用*:
print(*[val for val in n_list if n_list.count(val) == 1])
當前問題:
但是,在將其應用于函式時,出現錯誤:
def singleVal(n_list):
return(*[val for val in n_list if n_list.count(val) ==1])
singleVal(n_list)
錯誤:不能在此處使用啟動運算式。
有沒有辦法只從函式中的串列理解中獲取值?
預期輸出:
最終,應該類似于以下代碼,但采用函式形式并使用串列理解方法:
result = [val for val in a if a.count(val) ==1]
for i in result:
return I
回傳:
int:只出現一次的元素
uj5u.com熱心網友回復:
這里最簡單的做法是回傳串列,然后使用*運算子列印它:
def singleVal(n_list):
return [val for val in n_list if n_list.count(val) == 1]
print(*singleVal([2, 4, 4, 5, 2]))
# 5
如果您非常確定將回傳一個值,則可以撰寫函式以僅回傳一個值,例如:
def singleVal(n_list):
return next(val for val in n_list if n_list.count(val) == 1)
print(singleVal([2, 4, 4, 5, 2]))
# 5
請注意,singleVal如果 中存在多個唯一值,則上述版本的 只會回傳第一個唯一值,如果唯一值為零n_list則將引發。StopIteration
如果您希望您的函式以單個字串的形式回傳串列,您可以使用join:
def singleVal(n_list):
return " ".join(str(val) for val in n_list if n_list.count(val) == 1)
print(singleVal([2, 4, 4, 5, 2]))
# 5
請注意,將結果轉換為字串可以很容易地列印,但很難做任何其他事情(你需要使用split()和int()其轉換回數值串列)。
如果您希望函式只列印結果而不是回傳結果,請將其print放在函式內部,并且不要讓它回傳任何內容:
def singleVal(n_list):
print(*(val for val in n_list if n_list.count(val) == 1))
singleVal([2, 4, 4, 5, 2])
# 5
uj5u.com熱心網友回復:
def singleVal(L):
result = [str(val) for val in L if L.count(val)==1]
return '\n'.join(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/477045.html
標籤:Python python-3.x 列表 功能 列表理解
上一篇:多處理查詢檔案中的新行
