#python
#python
Вопрос:
Что делает цикл for с двумя индексами?
Например
for a, b in c:
Что делает этот оператор?
Комментарии:
1. Это зависит от используемой вами структуры данных.
Ответ №1:
Если c является итеративным объектом, который содержит элементы, которые можно распаковать, то вы можете использовать две переменные для выполнения цикла через c. Для примера рассмотрим приведенный ниже —
c = [(1,2),(3,4)];
for a,b in c:
print(a,b)
ВЫВОД :
1 2
3 4
Здесь мы использовали две переменные, которые являются ничем иным, как распакованными элементами из elements of c
. Вы можете использовать его в таких случаях, когда вы хотите одновременно получить доступ к внутренним элементам элемента, как в примере.
ПРИМЕЧАНИЕ:
Вы должны быть уверены, что все элементы в вашем iterable согласованы по своим размерам. Например, приведенный выше пример не сработал бы, если в c
есть элементы, подобные —
c = [[1,1],[1,2],[3]];
Приведенная выше строка приведет к ошибке со словами —
ValueError: not enough values to unpack (expected 2, got 1)
Таким же образом, описанный выше подход может быть расширен для использования более двух подобных —
c = [[1,2,3], [4,5,6], [7,8,[1,2,3]]];
for a,b,d in c:
print(a,b,d)
ВЫВОД :
1 2 3
4 5 6
7 8 [1, 2, 3]
ВАРИАНТЫ ИСПОЛЬЗОВАНИЯ —
-
Один из распространенных вариантов использования этого — в словаре. Вы можете получить доступ как к ключам, так и к значениям словаря во время итерации по нему, используя этот способ зацикливания как —
c = {'a':1, 'b':2, 'c':3}; for key,value in c.items(): print(key,value)
ВЫВОД :
a 1 b 2 c 3
-
Это также используется, когда мы используем
zip()
в python для перебора нескольких переменных одновременно, но нам нужно получить доступ к значениям одновременно как —l1 = [1,2,3]; l2 = [4,5,6]; for list1,list2 in zip(l1,l2): print(list1, list2)
ВЫВОД :
1 4 2 5 3 6
Ответ №2:
Вы можете использовать этот стиль для перебора словаря или списка кортежей, или списка списков, а также Пример:
my_list = [{1, 2}, {3, 4}]
for a, b in my_list:
print (a, b)
Приведенный выше цикл выдаст вывод в виде:
1 2
3 4
Комментарии:
1. Вы уверены, что хотели использовать
{
? Я помню, что наборы не сохраняют порядок, но я не уверен.
Ответ №3:
Если у вас есть список кортежей
[(0,1), (0, 2), (5,3)]
Вы можете выполнить цикл по этому:
for i, j in my_list:
print("i", i, "j", j)
В результате
i 0 j 1
i 0 j 2
i 5 j 3
Ответ №4:
c может быть кортежем, а a, b распаковывает кортеж в 2 переменные.
c = [(5, 7), (5, 8)]
for a, b in c:
print(a , b)
5 7
5 8
Комментарии:
1. Почему говорят, что c может быть кортежем, а затем не делают его кортежем?