Python 编写函数查找是否大于5或小于5
问题是: 编写一个函数length,它接受一个列表作为输入。如果列表长度大于或等于5,则返回“长于5”。如果长度小于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
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更高效的吗?