Всем привет.
Интересует такой вопрос, указанный в заголовке. Так и не смог додуматься.
Допустим есть список
nums = [1, 2, 3, 4]
и нужно каким-то ещё не объявленным или уже объявленным переменным последовательно присвоить значения этого списка. Например:
(Сразу скажу, что решения у меня есть и они ниже)
for i in nums:
a = i
b = i
c = i
d = i
# Всем переменным присвоится последнее значение списка
for i in range(len(nums)):
a = nums[i]
b = nums[i]
c = nums[i]
d = nums[i]
# list out of range
Мне непонятна логика такого подхода, как в таком цикле разбить итерации, словно сделать паузу и сказать:
так, сначала одной переменной первое значение, затем второй - второе и т.д.
Решения есть, например:
# 1
x = [1, 2, 3, 4]
nums = iter(x)
a, b, c, d = next(nums), next(nums), next(nums), next(nums)
print(d, c, a, b) # 4 3 1 2
# 2
nums = [1, 2, 3, 4]
a, b, c, d = nums[0], nums[1], nums[2], nums[3]
print(d, c, a, b) # 4 3 1 2
И подозреваю, что ещё несколько найдётся с использованием функций.
Но кажется, что это костыльный метод, и само собой он не универсальный, потому что нужно прописывать индексы, а значит с большим числом - такое себе...
В случае с iter() и next() - немного поприятнее, но всё же - нужно указывать верное количество next() в зависимости от длины списка. Допустим что next() можно будет через функцию указывать равное длине списка. Не пробовал.
А вот хочется с циклом for понять, но не прихоти ради и не из каких-то принципов, а чисто для общего развития. Вроде понимаю, что решение должно быть, а вот додуматься не могу. Мне всегда циклы тяжело давались, особенно вложенные. Не по зубам они мне.