pyextend库-merge可迭代对象合并函数

本篇文章主要介绍了"pyextend库-merge可迭代对象合并函数 ",主要涉及到pyextend库-merge可迭代对象合并函数 方面的内容,对于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



本文转自 奚落123 51CTO博客,原文链接:xxxxhttp://blog.51cto.com/guyuyuan/1920919xxx,如需转载请自行联系原作者


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值