zoukankan      html  css  js  c++  java
  • pyextend库-merge可迭代对象合并函数

    pyextend - python extend lib

    merge (iterable1, *args)

    参数: 

    iterable1: 实现 __iter__的可迭代对象, 如 str, tuple, dict, list

    *args: 其他实现 __iter__的可迭代对象

    返回值:

    合并后的迭代对象

    使用范例:

        Example 1:
            source = ['a', 'b', 'c']
            result = merge(source, [1, 2, 3])
            self.assertEqual(result, ['a', 'b', 'c', 1, 2, 3])
    
            result = merge(source, [1, 2, 3], ['x', 'y', 'z'])
            self.assertEqual(result, ['a', 'b', 'c', 1, 2, 3, 'x', 'y', 'z'])
    
        Example 2:
            source = 'abc'
            result = merge(source, '123')
            self.assertEqual(result, 'abc123')
    
            result = merge(source, '123', 'xyz')
            self.assertEqual(result, 'abc123xyz')
    
        Example 3:
            source = ('a', 'b', 'c')
            result = merge(source, (1, 2, 3))
            self.assertEqual(result, ('a', 'b', 'c', 1, 2, 3))
    
            result = merge(source, (1, 2, 3), ('x', 'y', 'z'))
            self.assertEqual(result, ('a', 'b', 'c', 1, 2, 3, 'x', 'y', 'z'))
    
        Example 4:
            source = {'a': 1, 'b': 2, 'c': 3}
            result = merge(source, {'x': 'm', 'y': 'n'}, {'z': '1'})
            self.assertEqual(result, {'a': 1, 'b': 2, 'c': 3, 'x': 'm', 'y': 'n', 'z': '1'})

    代码:

    @accepts(iterable1='__iter__')
    def merge(iterable1, *args):
        """
        Returns an type of iterable1 value, which merged after iterable1 used *args
    
        :exception TypeError: if any parameter type of args not equals type(iterable1)
    
        """
    
        result_list = list(iterable1) if not isinstance(iterable1, dict) else eval('list(iterable1.items())')
    
        for i, other in enumerate(args, start=1):
            if not isinstance(other, type(iterable1)):
                raise TypeError('the parameter type of index {} not equals type of index 0'.format(i))
            if not isinstance(other, dict):
                result_list[len(result_list):len(result_list)] = list(other)
            else:
                result_list[len(result_list):len(result_list)] = list(other.items())
    
        if isinstance(iterable1, str):
            return ''.join(result_list)
        elif isinstance(iterable1, tuple):
            return tuple(result_list)
        elif isinstance(iterable1, dict):
            return dict(result_list)
        else:
            return result_list
  • 相关阅读:
    [洛谷P2742]【模板】二维凸包([USACO5.1]圈奶牛Fencing the Cows)
    [洛谷P4781]【模板】拉格朗日插值
    [洛谷P4550]收集邮票
    [洛谷P4900]食堂
    [洛谷P2057][SHOI2007]善意的投票
    [CF1083C]Max Mex
    bzoj3110: [Zjoi2013]K大数查询 【树套树,标记永久化】
    bzoj 1207: [HNOI2004]打鼹鼠 (dp)
    bzoj 1037: [ZJOI2008]生日聚会Party (dp)
    bzoj 2140: 稳定婚姻 (二分图)
  • 原文地址:https://www.cnblogs.com/Vito2008/p/pyextned-merge.html
Copyright © 2011-2022 走看看