Python内蔵関数_zip関数

11932 ワード

1.概念
1.1説明
zip()関数は、 をパラメータとして使用し、オブジェクト内の対応する要素を各メタグループにパッケージ化し、これらのメタグループからなる に戻る.
各反復器の要素数が一致しない場合は、リスト長 を返し、*番号オペレータを使用してメタグループをリストに解凍できます.
注意:
Py 3とPy 2ではzip関数が異なります
zip     Python 2   Python 3     :  Python 3.x        ,zip()         。      ,    list()   。

1.2構文
zip(iter1 [,iter2 [...]])

パラメータの説明:
iter 1つ以上の反復器
ソースの内容:
class zip(object):
    """
    zip(iter1 [,iter2 [...]]) --> zip object
    
    Return a zip object whose .__next__() method returns a tuple where
    the i-th element comes from the i-th iterable argument.  The .__next__()
    method continues until the shortest iterable in the argument sequence
    is exhausted and then it raises StopIteration.
    """
    def __getattribute__(self, *args, **kwargs): # real signature unknown
        """ Return getattr(self, name). """
        pass

    def __init__(self, iter1, iter2=None, *some): # real signature unknown; restored from __doc__
        pass

    def __iter__(self, *args, **kwargs): # real signature unknown
        """ Implement iter(self). """
        pass

    @staticmethod # known case of __new__
    def __new__(*args, **kwargs): # real signature unknown
        """ Create and return a new object.  See help(type) for accurate signature. """
        pass

    def __next__(self, *args, **kwargs): # real signature unknown
        """ Implement next(self). """
        pass

    def __reduce__(self, *args, **kwargs): # real signature unknown
        """ Return state information for pickling. """
        pass

1.3戻り値
  • py2.Xは直接タプルリストに戻る.
  • py3.Xメタグループリストのオブジェクトを返すには、listメソッドを手動で実行して変換する必要がある
  • 2.例
    zip関数は圧縮をサポートし、解凍もサポートします
    lst01 = ['a','b','c']
    lst02 = ['d','e','f']
    lst03 = ['g','h','i','j']
    
    # 1.  
    
    # 1.1       
    lst_new_obj01 = zip(lst01,lst02)
    print(lst_new_obj01)    #  py3   zip          
    # py3 ,zip          ,  ,      ,        list      
    lst_new01 = list(lst_new_obj01)
    
    # 1.2       
    lst_new_obj02 = zip(lst01,lst03)
    lst_new02 = list(lst_new_obj02)
    
    # 1.3       &       
    lst_new_obj03 = zip(lst01,lst02,lst03)
    lst_new03 = list(lst_new_obj03)
    
    print(lst_new01)    # [('a', 'd'), ('b', 'e'), ('c', 'f')]
    print(lst_new02)    # [('a', 'g'), ('b', 'h'), ('c', 'i')]
    print(lst_new03)    # [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]
    
    
    # 2   
    
    # 2.1             ,       ,      
    unzip03_01 = zip(*lst_new_obj03)
    unzip03_02 = zip(*lst_new03)
    
    print(unzip03_01)   # 
    print(unzip03_02)   # 
    
    unzip03_fin = list(unzip03_01)
    
    print(unzip03_fin)  # []
    
    # 2.2 py3      
    print(zip(*zip(lst01,lst02,lst03))) # 
    print(list(zip(*zip(lst01,lst02,lst03))))   # [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i')]
    
    #   :   ,    ,                  ,