Python - zipで二つのリスト縛り

zip()は巡回可能(iterable)オブジェクトを一つのIterableで囲むために使用します。

例を見ながら説明します。

1. zipで2つのリストを1つにまとめる

zip()の二つのリストを渡すと、それぞれの要素が対を合わせてリストに追加されます。

zip()はiterableを返しますので、Listに変換するには、 list()を利用して変換する必要があります。

numbers = [1, 2, 3]
numbers_str = ['one', 'two', 'three']

result = zip(numbers, numbers_str)

print(type(result))

result_list = list(result)
print(result_list)

Output:

<class 'zip'>
{(1, 'one'), (3, 'three'), (2, 'two')}
[(1, 'one'), (2, 'two'), (3, 'three')]

iterableをsetに変換するには、 set()を利用します。

result = zip(numbers, numbers_str)
result_set = set(result)

2. zipで要素数が異なるリストを1つにまとめる

zip()に渡されるリストの長さが異なっている場合、長さが小さいことに合わせます。

numbers = [1, 2, 3]
numbers_str = ['one', 'two', 'three', 'four']

result = zip(numbers, numbers_str)

result_set = set(result)
print(result_set)

Output:

{(2, 'two'), (1, 'one'), (3, 'three')}

3. zipで3つ以上のリストを1つにまとめる

zip()は二つ以上のリストを引数として渡すことができます。リストの各項目が合わさってiterableに戻ります。

numbers = [1, 2, 3]
numbers_str = ['one', 'two', 'three']
str_list = ['1st', '2nd', '3rd']

result = zip(numbers, numbers_str, str_list)

result_set = set(result)
print(result_set)

Output:

{(3, 'three', '3rd'), (1, 'one', '1st'), (2, 'two', '2nd')}

Related Posts

codechachaCopyright ©2019 codechacha