★像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. Django——model进阶(待完成)

    https://www.cnblogs.com/yuanchenqi/articles/7570003.html 一.QuerySet 1.可切片 使用Python 的切片语法来限制查询集记录的数目  ...

  2. 企业Web应用创新实验

    我现在设计一个小而美的管理工具,为此费劲心思搞“创新”.“创新”一词已经被滥用,但我...真的想弄出一点创新. 基于Web的企业应用,如CRM.项目管理.OA等软件,尽管经历十几年发展,所谓的理论有所 ...

  3. git push & git pull 推送/拉取分支

    git push与git pull是一对推送/拉取分支的git命令. git push 使用本地的对应分支来更新对应的远程分支. $ git push <远程主机名> <本地分支名& ...

  4. Qt之QSS(Q_PROPERTY-自定义属性)

    版权声明:进步始于交流,收获源于分享!纯正开源之美,有趣.好玩.靠谱...作者:一去丶二三里 博客地址:http://blog.csdn.net/liang19890820   目录(?)[+]   ...

  5. 多线程(八)~ThreadLocal、InheritableThreadLocal的使用

    通过前面的学习,我们了解了在多线程+成员变量等情况下会出现线程安全的问题.那么解决线程安全问题除了使用synchronize关键字之外,还有另一种常用的解决思路,那就是使用ThreadLocal类,下 ...

  6. C# winform 跨线程修改界面

    我们可以使用invoke和bengininvoke invoke同步执行一个委托 begininvoke异步执行一个委托

  7. 再学UML-UML用例建模解析(三)

    2. 编写用例文档 绘制用例图只是完成了用例建模最基本也是最简单的一步,用例建模的核心在于编写用例文档,用例文档又称为用例规约或用例描述.顾名思义,用例文档是用于描述用例的文档,每一个用例对应于一个用 ...

  8. Andriod ADB Interface驱动安装失败Configure USB Debug for Android

    介绍: Linux或Apple或OS X ,已经安装了USB驱动调试为Android的帮助,确认您的Android USB调试连接配置和正常工作. Windows下需要自己手动下载驱动安装或者通过下载 ...

  9. IOS 多媒体 使用总结

    一.音频播放 1.音效播放(短时间的音频文件)1> AudioServicesCreateSystemSoundID2> AudioServicesPlaySystemSound 2.音乐 ...

  10. listview加载显示图片

    public class ImageAndTextListAdapter extends ArrayAdapter<ImageAndText> { private ListView lis ...