Как назначить условие каждому элементу в списке - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть список:

aa=[1,2.5,3]

Я хочу назначить условие для этого списка, чтобы он возвращался на основе значений: "Hello", "Bonjour", "Salut".

Я попробовал следующую функцию:

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

, но он только возвращает: 'Hello' Как я хочу, чтобы он вернулся: ['Hello','Salut','Bonjour']

Как сделать это Работа ? Что не так с моим кодом?

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

return операторов в python немедленно завершат функцию и вернут значение. Поэтому вам нужно хранить значения внутри и возвращать значения после того, как вы закончите проверку всех элементов.

Например:

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']

if против elif

Научитесь использовать 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')

Передача данных в качестве параметров

Как правило, вы хотите избежать использования «глобальных». Если вы можете помочь, вы должны передать вещи в качестве параметров (иногда этого нельзя избежать, но в большинстве случаев вы должны это сделать).

Я бы переписал код как:

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))
1 голос
/ 28 апреля 2020

Использование списка понимания:

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

Это печатает:

['Hello', 'Salut', 'Bonjour']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...