Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 28, 2015 15:49:14

Cronk
Зарегистрирован: 2015-10-28
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение списка с помощью функций. Как сделать правильно?

Надо получить список объектов, первый объект в списке будет родителем, остальные потомками. Родителя и потомков возвращают соответсвующие функции. Придумалось два варианта:

def get_parent(lst):
    return lst.append("parent")
def get_children(lst):
    for x in range(3):
        lst.append("obj_{}".format(x))
    return lst
objects = []
get_parent(objects)
get_children(objects)
print(objects)

def get_parent():
    return ["parent"]
def get_children():
    lst = []
    for x in range(3):
        lst.append("obj_{}".format(x))
    return lst
objects = []
objects.extend(get_parent())
objects.extend(get_children())
print(objects)

Результат выполнения одинаковый, поэтому вопрос - как правильно?
Мне больше первый вариант нравится - аккуратней выглядит вызов функций.
Хотя из второго явно видно, что меняется ранее созданный список.

Офлайн

#2 Окт. 28, 2015 16:27:03

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Изменение списка с помощью функций. Как сделать правильно?

Cronk
Надо получить список объектов, первый объект в списке будет родителем, остальные потомками. Родителя и потомков возвращают соответсвующие функции.
def get_parent(lst):
    return lst.append("parent")
Во-первых, объект parent добавляется к списку последним, а не первым:
>>> lst = [1,2,3]
>>> get_parent(lst)
>>> lst
[1, 2, 3, 'parent'] 
Во-вторых, функция get_parent ничего не возвращает:
>>> lst = [1,2,3]
>>> result = get_parent(lst)
>>> print(result)
None 
>>> 

Офлайн

#3 Окт. 28, 2015 16:41:36

Kon52
Зарегистрирован: 2015-01-31
Сообщения: 66
Репутация: +  3  -
Профиль   Отправить e-mail  

Изменение списка с помощью функций. Как сделать правильно?

def get_parent():
    return ["parent"]
def get_children():
    return ["obj_{}".format(i) for i in range(3)]
objects = get_parent() + get_children()
print(objects)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version