如何使输出仅为大于x的列表中的数字?


def list_number(mylist,x):
y=[i if i>x else False for i in mylist]
return y

我试图只得到列表中大于x的数字作为我的输出,如果没有大于x的数字,我也需要它到return False

例如mylist=[1,2,3,4,5,6,7,8,9]x=5,我希望我的输出是[6,7,8,9]。如果是x=10,我希望输出为false。

我不能使用任何方法,如.append.sort

你的例子中的错误是你不正确地使用了列表推导。下面是一些简单的示例,向您展示如何在条件语句中使用列表推导式:

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

您可以使用列表推导式,然后在列表为空时返回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

可以使用空列表为false这个事实值。
这样你的代码将总是返回一个列表,这比返回list | boolean

要好得多
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

我认为这段代码非常容易阅读和预测。不需要任何高级知识。(typehints除外)

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))

最新更新