кортежи python: распаковка в список с использованием *args

Привет и спасибо за ваше время;

Я использую *args для получения различных аргументов, что создает кортеж. Как «распаковать» кортеж в список? Следующий код добавляет к списку кортеж.

grades = []

def add_grades(*args):
    grades.append(args):
    return grades

print(add_grades(99,88,77))

Я могу сделать это, используя цикл for и перебирая кортеж, но хочу посмотреть, смогу ли я распаковать его напрямую.


person JulienEast    schedule 16.02.2020    source источник
comment
Не могли бы вы сделать list(args) ?   -  person AMC    schedule 16.02.2020
comment
Я мог бы, но это просто создает список, тогда как у меня уже есть список, созданный и пытающийся добавить значения.   -  person JulienEast    schedule 16.02.2020
comment
Ах, вы пытаетесь добавить несколько значений, я неправильно понял.   -  person AMC    schedule 16.02.2020
comment
Не беспокойтесь - я тоже пробовал этот подход.   -  person JulienEast    schedule 16.02.2020
comment
Может ли это быть дубликатом stackoverflow.com/questions/3274095 /добавить-кортежи-к-списку ?   -  person AMC    schedule 16.02.2020
comment
Я так не думал (могу ошибаться?), поскольку специально использую *args и пытаюсь добавить несколько значений в уже существующий список. Но пересмотрю.   -  person JulienEast    schedule 16.02.2020
comment
Вопрос немного сбивает с толку, но принятый ответ просто list.extend().   -  person AMC    schedule 16.02.2020


Ответы (2)


Вместо этого вы можете использовать метод list.extend:

def add_grades(*args):
    grades.extend(args):
    return grades
person blhsing    schedule 16.02.2020

Чтобы преобразовать tuple в список, вы можете вернуть *args в виде списка и расширить существующий список.

grades = []

def add_grades(*args):
    return [*args]

grades.extend(add_grades(99,88,77))

Обратите внимание, что вы также можете расширить список с помощью tuple

def add_grades(*args):
    return args

grades.extend(add_grades(99,88,77))

Если вы больше ничего не делаете в add_grades, вы также можете сделать это без каких-либо функций

grades.extend([99,88,77])
person Guy    schedule 16.02.2020
comment
Спасибо - похоже, extend() принимает любые аргументы кортежа и добавляет их в список, что я и искал (и включен в два первых ответа) - person JulienEast; 16.02.2020