Python 编写函数查找是否大于5或小于5

Python 编写函数查找是否大于5或小于5,python,function,Python,Function,问题是: 编写一个函数length,它接受一个列表作为输入。如果列表长度大于或等于5,则返回“长于5”。如果长度小于5,则返回“小于5” 到目前为止,我已经: def length(x): for lst in x: if len(x) >= 5: return "Longer than 5" else: return "Less than 5" 您可以尝试: def length(lst): return "Longer t

问题是:

编写一个函数length,它接受一个列表作为输入。如果列表长度大于或等于5,则返回“长于5”。如果长度小于5,则返回“小于5”

到目前为止,我已经:

def length(x):
   for lst in x:
    if len(x) >= 5:
        return "Longer than 5"
    else:
        return "Less than 5"
您可以尝试:

def length(lst):
    return "Longer than 5" if len(lst) > 5 else "Less than 5"
解决: 请尝试使用以下代码:

def length(x):
    if len(x) >= 5:
        return "Longer than 5"
    return "Less than 5"
print(len(x))
for i in x:
    print(len(i))
但是,如果您想要较短的代码,请使用:

def length(x):
    return '%s than 5' % ['Less', 'Longer'][len(x) >= 5]
或者使用
str.format

def length(x):
    return '{} than 5'.format(['Less', 'Longer'][len(x) >= 5])
或者,如果您的版本为3.6或更高版本,请使用:

def length(x):
    a = ['Less', 'Longer'][len(x) >= 5]
    return f'{a} than 5'
@SayandipDutta在评论中帮助解释了这一点,他说:

“如果
len(x)<5
,则返回
False
,这被解释为
0
,对于其他条件,则返回
1
。因此,
['Less','Longer'][0]
['Less','Longer'][1]

为什么你的代码不起作用 您的代码不起作用,因为
for
正在迭代
x
,并获取
x
中的每个值,但是我们希望匹配整个列表的长度,而不是每个项目的长度

假设您的列表是:

x = [1, 2, 3, 4, 5]
以下代码:

def length(x):
    if len(x) >= 5:
        return "Longer than 5"
    return "Less than 5"
print(len(x))
for i in x:
    print(len(i))
将导致:

5
但如果您使用以下代码:

def length(x):
    if len(x) >= 5:
        return "Longer than 5"
    return "Less than 5"
print(len(x))
for i in x:
    print(len(i))

这会引起错误。

我喜欢第二种解决方案。请您解释一下
(['Less','Longer'][len(x)>=5])
这是如何工作的好吗?如果
len(x)<5
,那么它将返回
False
,被解释为
0
,反之亦然,其他条件的计算结果为
1
。所以,
['Less',Longer'][0]
['Less',Longer'][1]
@SayandipDutta Yeah correct准备好告诉他,好吧,所以根本不需要调用for循环。非常感谢<代码>但是如果你想要一个更高效的代码,你能解释一下方法2是如何比方法1更高效的吗?