如何为列表中的每个元素指定条件

2024-06-01 05:13:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份清单:

aa=[1,2.5,3]

我想为这个列表分配一个条件,以便它根据值返回:“Hello”、“Bonjour”、“Sallt”

我尝试了以下功能:

def ab():
    for a in aa:
        if a<2 : return "Hello"
        if 3>a>2 : return "Salut"
        else: return "Bonjour"

但它只返回:'Hello' 我希望它如何返回:['Hello','Salut','Bonjour']

如何让它工作?我的代码有什么问题


Tags: in功能hello列表forreturnifab
2条回答

使用列表理解:

result = [ "Hello" if n < 2 else "Salut" if n < 3 else "Bonjour" for n in aa]
print(result)

这张照片是:

['Hello', 'Salut', 'Bonjour']

python中的return语句将立即结束函数并返回值。因此,您需要在内部存储这些值,并在检查完所有元素后返回这些值

例如:

def ab():
    output_save = []
    for a in aa:
        if a<2 : output_save.append("Hello")
        elif 3>a>2 : output_save.append("Salut")
        else: output_save.append("Bonjour")
    return output_save
aa=[1,2.5,3]
ab()

返回

['Hello', 'Salut', 'Bonjour']

ifvselif

学习使用elif! 它可以优化代码并使其更具可读性

例如:

if 90 <= grade:
    print('A')
elif 80 <= grade:
    print('B')
elif 70 <= grade: 
    print('C')
elif 60 <= grade:
    print('D')
else:
    print('F')

相当于

if 90 <= grade:
    print('A')
if 80 <= grade < 90:
    print('B')
if 70 <= grade < 80:
    print('C')
if 60 <= grade < 70:
    print('D')
if grade < 60:
    print('F')

将事物作为参数传入

通常,您希望避免使用“全局”s。如果您可以帮助,您应该将内容作为参数传入(有时这是不可避免的,但在大多数情况下,您应该这样做)

我会将代码改写为:

def greeting_by_values(values_list):
    greeting_list = []
    for value in values_list: 
        if value < 2:
            greeting_list.append("Hello")
        elif value < 3: 
            greeting_list.append("Salut")
        else:
            greeting_list.append("Bonjour")
    return greeting_list
values=[1,2.5,3]
print(greeting_by_values(values))

相关问题 更多 >