DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on • Edited on

[] & () for variables in Python `for` statement

Buy Me a Coffee

  • My post explains [] and () for variables in variable assignment.
  • My post explains variable assignment.
  • My post explains iterable unpacking in variable assignment.
  • My post explains * for iterable unpacking in variable assignment.

You can use one or more [] and () for one or more variables in a for statement as shown below:

mylist = [[[3]],
          [[5]],
          [[7]]]

for v1 in mylist:
    print(v1)
# [[3]]
# [[5]]
# [[7]]

for [v1] in mylist:
    print(v1)
# [3]
# [5]
# [7]

for [[v1]] in mylist:
    print(v1)
# 3
# 5
# 7
Enter fullscreen mode Exit fullscreen mode
mytuple = (((3,),),
          ((5,),),
          ((7,),),)

for v1 in mytuple:
    print(v1)
for (v1) in mytuple:
    print(v1)
# ((3,),)
# ((5,),)
# ((7,),)

for (v1,) in mytuple:
    print(v1)
# (3,)
# (5,)
# (7,)

for ((v1,),) in mytuple:
    print(v1)
# 3
# 5
# 7
Enter fullscreen mode Exit fullscreen mode
mylist = [[ 0,  1, [ 2,  3, [ 4,  5]]],
          [ 6,  7, [ 8,  9, [10, 11]]],
          [12, 13, [14, 15, [16, 17]]],
          [18, 19, [20, 21, [22, 23]]]]

for v1 in mylist:
    print(v1)
# [ 0,  1, [ 2,  3, [ 4,  5]]]
# [ 6,  7, [ 8,  9, [10, 11]]]
# [12, 13, [14, 15, [16, 17]]]
# [18, 19, [20, 21, [22, 23]]]

for v1, v2, v3 in mylist:
    print(v1, v2, v3)
for [v1, v2, v3] in mylist:
    print(v1, v2, v3)
#  0  1 [ 2,  3, [ 4,  5]]
#  6  7 [ 8,  9, [10, 11]]
# 12 13 [14, 15, [16, 17]]
# 18 19 [20, 21, [22, 23]]

for [v1, v2, [v3, v4, v5]] in mylist:
    print(v1, v2, v3, v4, v5)
#  0  1  2  3 [ 4,  5]
#  6  7  8  9 [10, 11]
# 12 13 14 15 [16, 17]
# 18 19 20 21 [22, 23]

for [v1, v2, [v3, v4, [v5, v6]]] in mylist:
    print(v1, v2, v3, v4, v5, v6)
#  0  1  2  3  4  5
#  6  7  8  9 10 11
# 12 13 14 15 16 17
# 18 19 20 21 22 23
Enter fullscreen mode Exit fullscreen mode
mytuple = (( 0,  1, ( 2,  3, ( 4,  5))),
           ( 6,  7, ( 8,  9, (10, 11))),
           (12, 13, (14, 15, (16, 17))),
           (18, 19, (20, 21, (22, 23))))

for v1 in mytuple:
    print(v1)
for (v1) in mytuple:
    print(v1)
# ( 0,  1, ( 2,  3, ( 4,  5)))
# ( 6,  7, ( 8,  9, (10, 11)))
# (12, 13, (14, 15, (16, 17)))
# (18, 19, (20, 21, (22, 23)))

for v1, v2, v3 in mytuple:
    print(v1, v2, v3)
for (v1, v2, v3) in mytuple:
    print(v1, v2, v3)
#  0  1 ( 2,  3, ( 4,  5))
#  6  7 ( 8,  9, (10, 11))
# 12 13 (14, 15, (16, 17))
# 18 19 (20, 21, (22, 23))

for (v1, v2, (v3, v4, v5)) in mytuple:
    print(v1, v2, v3, v4, v5)
#  0  1  2  3 ( 4,  5)
#  6  7  8  9 (10, 11)
# 12 13 14 15 (16, 17)
# 18 19 20 21 (22, 23)

for (v1, v2, (v3, v4, (v5, v6))) in mytuple:
    print(v1, v2, v3, v4, v5, v6)
#  0  1  2  3  4  5
#  6  7  8  9 10 11
# 12 13 14 15 16 17
# 18 19 20 21 22 23
Enter fullscreen mode Exit fullscreen mode

Only one *variable can be used in each [] and () as shown below:

mylist = [[ 0,  1, [ 2,  3, [ 4,  5]]],
          [ 6,  7, [ 8,  9, [10, 11]]],
          [12, 13, [14, 15, [16, 17]]],
          [18, 19, [20, 21, [22, 23]]]]

for v1 in mylist:
    print(v1)
for *v1, in mylist:
    print(v1)
# [ 0,  1, [ 2,  3, [ 4,  5]]]
# [ 6,  7, [ 8,  9, [10, 11]]]
# [12, 13, [14, 15, [16, 17]]]
# [18, 19, [20, 21, [22, 23]]]

for v1, *v2, v3 in mylist:
    print(v1, v2, v3)
for [v1, *v2, v3] in mylist:
    print(v1, v2, v3)
for (v1, *v2, v3) in mylist:
    print(v1, v2, v3)
#  0 [ 1] [ 2,  3, [ 4,  5]]
#  6 [ 7] [ 8,  9, [10, 11]]
# 12 [13] [14, 15, [16, 17]]
# 18 [19] [20, 21, [22, 23]]

for [v1, *v2, [*v3, v4, v5]] in mylist:
    print(v1, v2, v3, v4, v5)
for (v1, *v2, (*v3, v4, v5)) in mylist:
    print(v1, v2, v3, v4, v5)
#  0 [ 1] [ 2]  3 [ 4,  5]
#  6 [ 7] [ 8]  9 [10, 11]
# 12 [13] [14] 15 [16, 17]
# 18 [19] [20] 21 [22, 23]

for [v1, *v2, [*v3, v4, [v5, *v6]]] in mylist:
    print(v1, v2, v3, v4, v5, v6)
for (v1, *v2, (*v3, v4, (v5, *v6))) in mylist:
    print(v1, v2, v3, v4, v5, v6)
#  0 [ 1] [ 2]  3  4 [ 5]
#  6 [ 7] [ 8]  9 10 [11]
# 12 [13] [14] 15 16 [17]
# 18 [19] [20] 21 22 [23]
Enter fullscreen mode Exit fullscreen mode
mytuple = (( 0,  1, ( 2,  3, ( 4,  5))),
           ( 6,  7, ( 8,  9, (10, 11))),
           (12, 13, (14, 15, (16, 17))),
           (18, 19, (20, 21, (22, 23))))

for v1 in mytuple:
    print(v1)
# ( 0,  1, ( 2,  3, ( 4,  5)))
# ( 6,  7, ( 8,  9, (10, 11)))
# (12, 13, (14, 15, (16, 17)))
# (18, 19, (20, 21, (22, 23)))

for *v1, in mytuple:
    print(v1)
# [ 0,  1, ( 2,  3, ( 4,  5))]
# [ 6,  7, ( 8,  9, (10, 11))]
# [12, 13, (14, 15, (16, 17))]
# [18, 19, (20, 21, (22, 23))]

for v1, *v2, v3 in mytuple:
    print(v1, v2, v3)
for [v1, *v2, v3] in mytuple:
    print(v1, v2, v3)
for (v1, *v2, v3) in mytuple:
    print(v1, v2, v3)
#  0 [ 1] ( 2,  3, ( 4,  5))
#  6 [ 7] ( 8,  9, (10, 11))
# 12 [13] (14, 15, (16, 17))
# 18 [19] (20, 21, (22, 23))

for [v1, *v2, [*v3, v4, v5]] in mytuple:
    print(v1, v2, v3, v4, v5)
for (v1, *v2, (*v3, v4, v5)) in mytuple:
    print(v1, v2, v3, v4, v5)
#  0 [ 1] [ 2]  3 ( 4,  5)
#  6 [ 7] [ 8]  9 (10, 11)
# 12 [13] [14] 15 (16, 17)
# 18 [19] [20] 21 (22, 23)

for [v1, *v2, [*v3, v4, [v5, *v6]]] in mytuple:
    print(v1, v2, v3, v4, v5, v6)
for (v1, *v2, (*v3, v4, (v5, *v6))) in mytuple:
    print(v1, v2, v3, v4, v5, v6)
#  0 [ 1] [ 2]  3  4 [ 5]
#  6 [ 7] [ 8]  9 10 [11]
# 12 [13] [14] 15 16 [17]
# 18 [19] [20] 21 22 [23]
Enter fullscreen mode Exit fullscreen mode

Top comments (0)