#python #list
Вопрос:
Кто — нибудь может объяснить, в чем проблема с этим кодом?
for game_name,game_size in games_names,games_sizes:
print(f'Game_Name = {game_name} Size = {game_size}')
Это код Python, в котором я пытаюсь перебрать два списка и распечатать их значения, но это приводит к этой ошибке:
Ошибка значения: слишком много значений для распаковки (ожидается 2)
Комментарии:
1. Привет, пожалуйста, используйте уценку для своего кода.
Ответ №1:
Если вы хотите выполнить итерацию по 2 спискам в один и тот же момент, вам следует использовать zip()
функцию.
Пример:
>>> lol = [1,2,3,4,5]
>>> kek = [6,7,8,9,10]
>>> for num, secnum in zip(lol, kek):
... print(num, secnum)
Позвольте мне объяснить, почему вы не можете «распаковать» его.
Например, предположим, что у нас есть этот список:
arr = [1, 2, 3, 4, 5]
. На каждой итерации вы можете получить только 1 объект, верно?
one = arr[0]
two = arr[2]
...
Так вот как мы могли бы получить значения из списка.
Мы тоже можем присваивать такие значения:
one, two, three = arr[0], arr[1], arr[2]
В python есть *
знак, означающий, что вы можете «упаковать» значение в список.
colors = ['cyan', 'magenta', 'yellow', 'black']
cyan, magenta, *other = colors
print(cyan)
print(magenta)
print(other)
Выход:
cyan
magenta
['yellow', 'black']
Краткое изложение того, что нужно сделать для распаковки:
- Распаковка назначает элементы списка нескольким переменным.
- Используйте звездочку (*) перед переменной, подобной этой *variable_name, чтобы упаковать оставшиеся элементы списка в другой список.