要素数の異なる 2 つの list があります。
rooms = [101, 102, 103]
girls = ['ヒロ', '沙英']
zip() にこれらの list を渡すと、イテレータの長さは短い方に合わされてしまいます。
>>> for room, girl in zip(rooms, girls):
... print(f'{room} 号室には {girl} が住んでいます。')
101 号室には ヒロ が住んでいます。
102 号室には 沙英 が住んでいます。
それを防ぐには itertools.zip_longest() を使います。この関数を使うと、足りない値が None
で埋められます。
>>> for room, girl in itertools.zip_longest(rooms, girls):
... print(f'{room} 号室には {girl} が住んでいます。')
101 号室には ヒロ が住んでいます。
102 号室には 沙英 が住んでいます。
103 号室には None が住んでいます。
また任意の値で埋めることも可能です。
>>> for room, girl in itertools.zip_longest(rooms, girls, fillvalue='----'):
... print(f'{room} 号室には {girl} が住んでいます。')
101 号室には ヒロ が住んでいます。
102 号室には 沙英 が住んでいます。
103 号室には ---- が住んでいます。