pyextend - python extend lib

merge (iterable1, *args)

参数: 

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

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

返回值:

合并后的迭代对象

使用范例:

  1. Example 1:
  2. source = ['a', 'b', 'c']
  3. result = merge(source, [1, 2, 3])
  4. self.assertEqual(result, ['a', 'b', 'c', 1, 2, 3])
  5.  
  6. result = merge(source, [1, 2, 3], ['x', 'y', 'z'])
  7. self.assertEqual(result, ['a', 'b', 'c', 1, 2, 3, 'x', 'y', 'z'])
  8.  
  9. Example 2:
  10. source = 'abc'
  11. result = merge(source, '')
  12. self.assertEqual(result, 'abc123')
  13.  
  14. result = merge(source, '', 'xyz')
  15. self.assertEqual(result, 'abc123xyz')
  16.  
  17. Example 3:
  18. source = ('a', 'b', 'c')
  19. result = merge(source, (1, 2, 3))
  20. self.assertEqual(result, ('a', 'b', 'c', 1, 2, 3))
  21.  
  22. result = merge(source, (1, 2, 3), ('x', 'y', 'z'))
  23. self.assertEqual(result, ('a', 'b', 'c', 1, 2, 3, 'x', 'y', 'z'))
  24.  
  25. Example 4:
  26. source = {'a': 1, 'b': 2, 'c': 3}
  27. result = merge(source, {'x': 'm', 'y': 'n'}, {'z': ''})
  28. self.assertEqual(result, {'a': 1, 'b': 2, 'c': 3, 'x': 'm', 'y': 'n', 'z': ''})

代码:

  1. @accepts(iterable1='__iter__')
  2. def merge(iterable1, *args):
  3. """
  4. Returns an type of iterable1 value, which merged after iterable1 used *args
  5.  
  6. :exception TypeError: if any parameter type of args not equals type(iterable1)
  7.  
  8. """
  9.  
  10. result_list = list(iterable1) if not isinstance(iterable1, dict) else eval('list(iterable1.items())')
  11.  
  12. for i, other in enumerate(args, start=1):
  13. if not isinstance(other, type(iterable1)):
  14. raise TypeError('the parameter type of index {} not equals type of index 0'.format(i))
  15. if not isinstance(other, dict):
  16. result_list[len(result_list):len(result_list)] = list(other)
  17. else:
  18. result_list[len(result_list):len(result_list)] = list(other.items())
  19.  
  20. if isinstance(iterable1, str):
  21. return ''.join(result_list)
  22. elif isinstance(iterable1, tuple):
  23. return tuple(result_list)
  24. elif isinstance(iterable1, dict):
  25. return dict(result_list)
  26. else:
  27. return result_list

pyextend库-merge可迭代对象合并函数的更多相关文章

  1. python迭代-如何在一个for语句中迭代多个可迭代对象

    如何在一个for语句中迭代多个可迭代对象 问题举例 (1)某班学生期末考试成绩,语文,数学,英语分别存储在3个列表中,同时迭代三个列表,计算每个学生的总分 (2)某年级有4个班,某次考试每班英语成绩分 ...

  2. 【笔记】如何在for语句中迭代多个可迭代对象

    并行=>使用内置函数zip,它能将多个可迭代对象合并,每次迭代返回一个元组. for i,j,k in zip(a,b,c): TODO 穿行=>使用标准库中的itertools.chai ...

  3. Python可迭代对象、迭代器和生成器

    Python可迭代对象.迭代器和生成器 python 函数 表达式 序列 count utf-8 云栖征文 python可迭代对象 python迭代器 python生成器 摘要: 8.1 可迭代对象( ...

  4. C++ Opencv split()通道分离函数 merge()通道合并函数 使用操作详解

    一. split()通道分离函数 split()函数的C++版本有两个原型,他们分别是: C++: void split(const Mat& src, Mat*mvbegin);//& ...

  5. pyextend库-unpack列表集合字符串解包函数

    pyextend - python extend lib unpack (iterable, count, fill=None) 参数: iterable: 实现 __iter__的可迭代对象, 如 ...

  6. python之函数闭包、可迭代对象和迭代器

    一.函数名的应用 # 1,函数名就是函数的内存地址,而函数名()则是运行这个函数. def func(): return print(func) # 返回一个地址 # 2,函数名可以作为变量. def ...

  7. python迭代-如何使用生成器函数实现可迭代对象

    如何使用生成器函数实现可迭代对象 问题举例: 实现一个可迭代对象的类,它能迭代出给定范围内 的所有素数: pn = PrimeNumbers(1, 30) for x in pn: print(x) ...

  8. python函数之可迭代对象、迭代器的判断

    怎么判断一个对象是可迭代对象还是迭代器 例子 from collections import Iterable, Iterator lst = ['Today is Wednesday', 'Tomo ...

  9. 使用 yield生成迭代对象函数

    https://www.cnblogs.com/python-life/articles/4549996.html https://www.liaoxuefeng.com/wiki/001431608 ...

随机推荐

  1. iOS App占用太多磁盘空间

    问题:随着App的不断运行,发现所占磁盘空间越来越大 分析:应该是网络下载中的缓存,包括利用SDWebImage产生的.和下载单个文件被取消后的缓存 验证:查看App目录中的Tmp(系统存放未下载完成 ...

  2. 读取本地json文件另一种方式

    function getScenemapData(){ $.ajax({     url: "/js/currency.json",    type: "GET" ...

  3. [HAOI2015]树上操作(树链剖分,线段树)

    题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a .操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 ...

  4. ABAP术语-V2 Module

    V2 Module 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/21/1115720.html Analogously to V1 the ...

  5. Python 整数 长整数 浮点数 字符串 列表 元组 字典的各种方法

    对于Python, 一切事物都是对象,对象基于类创建!! 注:查看对象相关成员var,type, dir 一.整数 如: 18.73.84 每一个整数都具备如下需要知道的功能: def bit_len ...

  6. 【项目笔记】完成一个基于SSM框架的增删改查的模块后总结的问题

    最近为了准备新工作重新摸出了SSM框架,同时从0学习了JQuery,终于用一周做完了一个包括增删改查的模块(主要是属性太多了,其中一个类50+,复制粘贴耗时). 从中特意记下了几个遇到的问题,总结一下 ...

  7. sublime text3 插件安装方法

    1.按Ctrl+`(ESC下方的键)调出console粘贴以下代码到底部命令行并回车 2.输入:import urllib.request,os,hashlib; h = '6f4c264a24d93 ...

  8. 大数据时代的结构化存储--HBase

    迄今,相信大家肯定听说过 HBase,但是对于 HBase 的了解可能仅仅是它是 Hadoop 生态圈重要的一员,是一个大数据相关的数据库技术. 今天我带你们一起领略一下 HBase 体系架构,看看它 ...

  9. CDH升级 5.7.5 --> 5.13.3(tar包方式)

    博客园首发,转载请注明出处:https://www.cnblogs.com/tzxxh/p/9123231.html 一.准备 1.关闭cdh中的服务 hdfs.yarn等所有服务:关闭 cm-ser ...

  10. FPGA时序逻辑中常见的几类延时与时间(五)

    FPGA逻辑代码重要的是理解其中的时序逻辑,延时与各种时间的记忆也是一件头疼的事,这里把我最近看到的比较简单的几类总结起来,共同学习.    一.平均传输延时 平均传输延时 二.开启时间与关闭时间 开 ...