LoginSignup
15
10

More than 5 years have passed since last update.

要素数の異なる list を zip する

Last updated at Posted at 2017-11-10

要素数の異なる 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 号室には ---- が住んでいます。
15
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
10