★像R语言里头有rep函数可以让向量的值重复,在python里面可以直接对列表用乘法让列表进行重复
注:这里生成的重复列表是个新列表(我们可以打印id查看一下)
 
a = [1,2]
b = a * 3
a
Out[1]: [1, 2]
b
Out[2]: [1, 2, 1, 2, 1, 2]
id(a)
Out[3]: 303757832
id(b)
Out[4]: 303741000
★将嵌套列表中的 子元素 合并,可以用sum函数,第二个参数传入一个空列表[]即可
注意:sum函数的参数包括两个(iterable可迭代对象,start求和的初始值),sum会把可迭代对象内的元素加在start参数传入的初始值上。
 
因此,如果初始值是个列表,那么可迭代对象也必须要是个列表,且必须是嵌套列表,因为只有这个列表元素也是列表时,这些元素才能跟初始值列表相加。
我们来列举几个例子
 
# 实际在计算:[] + [1,2] + [3,4]
sum([[1,2], [3,4]], [])
Out[13]: [1, 2, 3, 4] # 实际在计算:[5] + [1,2] + [3,4]
sum([[1,2], [3,4]], [5])
Out[14]: [5, 1, 2, 3, 4] # 实际在计算:[5,6] + [1,2] + [3,4]
sum([[1,2], [3,4]], [5,6])
Out[15]: [5, 6, 1, 2, 3, 4] # 实际在计算:[[5]] + [1,2] + [3,4]
sum([[1,2], [3,4]], [[5]])
Out[16]: [[5], 1, 2, 3, 4] # 实际在计算:[[5,6]] + [1,2] + [3,4]
sum([[1,2], [3,4]], [[5,6]])
Out[17]: [[5, 6], 1, 2, 3, 4]
我们会发现,这里sum函数都是在传入的第二个参数列表基础上,再合并了第一个参数——嵌套列表的所有子元素
 
★例子:如何让一个列表c = [1,2,3,4]中的每个元素重复指定次数(各元素重复次数按列表d=[4,1,3,2]来重复),生成一个新列表?
 
sum([[c[i]]*d[i] for i in range(len(c))], [])
Out[31]: [1, 1, 1, 1, 2, 3, 3, 3, 4, 4] # 更简单的(利用zip进行对应位置的元素匹配,免去了使用索引)
sum([[x] * y for x,y in zip(c, d)], [])
Out[43]: [1, 1, 1, 1, 2, 3, 3, 3, 4, 4]
利用的就是上面提到的:
 
        1. 列表数据类型可以直接使用乘法来指定次数进行重复
   2. sum(嵌套列表,[])可以展开二层嵌套列表并合并嵌套列表中的各子列表元素
 
注意:sum只能展开第一个参数中嵌套列表的最外头2层(实际上原理已经在上面提到了,就是展开列表里面的元素加在初始值上),例如下面这个例子

# 实际在计算:[0] + [[1,2], [3,4]] + [5,6]
sum([[[1,2],[3,4]],[5,6]], [0])
Out[34]: [0, [1, 2], [3, 4], 5, 6]

【原创】从 列表的重复 到 用sum展开二层嵌套列表将子元素合并的更多相关文章

  1. 【原创】展开二层嵌套列表(或pd.Series)的几种方法效率对比

    转载请注明出处:https://www.cnblogs.com/oceanicstar/p/10248763.html ★二层嵌套列表(或以列表为元素的pd.Series)有以下几种展开方式 (1)列 ...

  2. python 用嵌套列表做矩阵加法

    写一个函数,接收两个由嵌套列表模拟成的矩阵,返回一个嵌套列表作为计算结果,要求运行效果如下: >>> matrix1 = [[1, 1], [-3, 4]] >>> ...

  3. python_嵌套列表变成普通列表

    如何把[1, 5, 6, [2, 7, [3, [4, 5, 6]]]]变成[1, 5, 6, 2, 7, 3, 4, 5, 6]? 思考: -- for循环每次都遍历列表一层 -- 把取出的单个值加 ...

  4. Python列表去除重复元素

    主要尝试了3种列表去除重复元素 #2.去除列表中的重复元素 #set方法 def removeDuplicates_set(nums): l2 = list(set(l1)) #用l1的顺序排序l2 ...

  5. python列表删除重复元素的三种方法

    给定一个列表,要求删除列表中重复元素. listA = ['python','语','言','是','一','门','动','态','语','言'] 方法1,对列表调用排序,从末尾依次比较相邻两个元素 ...

  6. [leetcode]339. Nested List Weight Sum嵌套列表加权和

    Given a nested list of integers, return the sum of all integers in the list weighted by their depth. ...

  7. [leetcode]364. Nested List Weight Sum II嵌套列表加权和II

    Given a nested list of integers, return the sum of all integers in the list weighted by their depth. ...

  8. 集合求交集 & 去除列表中重复的元素

    集合求交集: set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} 交集:set3 = set1 & set2 print(ste3) #结果为{4,5} 或者ste1. ...

  9. Python 去除列表中重复的元素

    Python 去除列表中重复的元素 来自比较容易记忆的是用内置的set l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) print l2 还 ...

随机推荐

  1. Eclipse中搭建Android开发环境

    一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 下载地址:Eclipse:http://www.eclipse.org/downloads/ ...

  2. git如何进行远程分支切换

    git如何进行远程分支切换 git上查看远程分支命令: git branch -a  例如: 然后我想切换到daily/1.0.0远程分支:前提是必须要创建一个本地分支,并让它和远程分支进行关联,gi ...

  3. mybatis中sql语句查询操作

    动态sql where if where可以自动处理第一个and. <!-- 根据id查询用户信息 --> <!-- public User findUserById(int id) ...

  4. 模拟精灵 z

    反复做历史测试,重大改进了卖出的判断模式.此项改进能使系统收益每年增加5%-左右 重新整合了几种买法,使之在熊市更加谨慎.对大盘的反转反应更为灵敏 适当加大了仓位 单独处理有重大机会的股票 加入多种短 ...

  5. React学习笔记 - JSX简介

    React Learn Note 2 React学习笔记(二) 标签(空格分隔): React JavaScript 一.JSX简介 像const element = <h1>Hello ...

  6. jsencrypt代码分析——openssl的rsa加密解密在js的实现

    在js上做rsa,感觉jsencrypt这个是封装的比较好的,但用起来还是遇到了些坑,所以踩进代码里填填坑- 项目在这里 https://github.com/travist/jsencrypt [r ...

  7. MySQL学习(二)数据类型

    截取书中内容留作学习.... 1.整数类型 2.浮点数与定点数类型 3.日期时间类型 向数据库中插入当前系统时间:CURRENT_TIME或者NOW() 4.文本字符串类型 MySQL枚举类型:cre ...

  8. 【转】深度分析Java的ClassLoader机制(源码级别)

    原链接 Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中, JVM在加载类的时候,都是通过ClassLoa ...

  9. jstl 中substring,length等函数用法

    引入jstl库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%& ...

  10. HTML5之转动的轮子

    <!doctype html><html> <head></head> <body> <canvas width="1000 ...