but tuples in the loop header save us an extra step when iterating through sequences of sequences as suggested in even nested structures may be automatically unpacked this way in for((ab) (( ) abc ( nested sequences work too for ((ab)cin [(( ) )(( ) )]print(abc even this is not special casethough--the for loop simply runs the sort of assignment we ran just before iton each iteration any nested sequence structure may be unpacked this waysimply because sequence assignment is so genericfor ((ab)cin [([ ] )['xy' ]]print(abc python extended sequence assignment in for loops in factbecause the loop variable in for loop can be any assignment targetwe can also use python ' extended sequence-unpacking assignment syntax here to extract items and sections of sequences within sequences reallythis isn' special case eitherbut simply new assignment form in xas discussed in because it works in assignment statementsit automatically works in for loops consider the tuple assignment form introduced in the prior section tuple of values is assigned to tuple of names on each iterationexactly like simple assignment statementabc ( abc ( tuple assignment for (abcin [( )( )]print(abc used in for loop in python xbecause sequence can be assigned to more general set of names with starred name to collect multiple itemswe can use the same syntax to extract parts of nested sequences in the for loopa*bc ( abc while and for loops extended seq assignment