def list_number(mylist,x):
y=[i if i>x else False for i in mylist]
return y
我試圖僅將大于x串列中的數字作為我的輸出,return False如果沒有大于x.
例如mylist=[1,2,3,4,5,6,7,8,9]and x=5,我希望我的輸出是[6,7,8,9]。如果x=10,我希望我的輸出為假。
我不能使用任何方法,例如.append或.sort
uj5u.com熱心網友回復:
您示例中的錯誤是您對list comprehension的錯誤使用。以下是向您展示如何將串列推導與條件陳述句一起使用的簡單示例:
iterator = range(10)
# Example (list comprehension with if statement)
[x for x in iterator if x > 5]
# [6, 7, 8, 9]
# Example (list comprehension with if...else statement)
[x if x > 5 else 0 for x in iterator]
# [0, 0, 0, 0, 0, 0, 6, 7, 8, 9]
至于您的具體問題,您可以使用上面的資訊來創建這樣的函式:
def list_number(mylist, x):
y = [n for n in mylist if n > x]
if not y:
return False
return y
uj5u.com熱心網友回復:
您可以使用串列推導,如果串列為空,則回傳 False。使用or運算子可以簡化它,因為如果第一個陳述句被認為是 False,它將執行第二個陳述句,因此如果串列為空。
def list_number(mylist, x):
return [y for y in mylist if y > x] or False
另一種方法是使用過濾器:
def list_number(mylist, x):
return list(filter(x.__lt__, mylist)) or False
x.__lt__對應于 x 值的小于運算子。
無論哪種方式,
>>> list_number(list(range(10)), 5)
[6, 7, 8, 9]
>>> list_number(list(range(10)), 11)
False
uj5u.com熱心網友回復:
您可以使用空串列在 python中是錯誤值的事實。
這樣您的代碼將始終回傳一個串列,這比回傳一個串列要好得多 | 布林值
from typing import List
def list_number(my_list: List[int], x: int) -> List[int]:
return [num for num in my_list if num > x]
result: List[int] = list_number([4,6,89,21],7)
if(result):
print('non empty result')
else:
print('empty result')
result: List[int] = list_number([4,6,89,21],790)
if(result):
print('non empty result')
else:
print('empty result')
輸出
non empty result
empty result
uj5u.com熱心網友回復:
我想說這段代碼很容易閱讀和預測。不需要任何高級知識。(除了型別提示)
from typing import List, Union
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = 10
def greater_than(list_uf_nums: List[int], num: int) -> Union[List[int], bool]:
return_list = [y for y in list_uf_nums if y > num]
if not return_list:
return False
return return_list
print(greater_than(l, x))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/493742.html
