★像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. Scrapy框架之基于RedisSpider实现的分布式爬虫

    需求:爬取的是基于文字的网易新闻数据(国内.国际.军事.航空). 基于Scrapy框架代码实现数据爬取后,再将当前项目修改为基于RedisSpider的分布式爬虫形式. 一.基于Scrapy框架数据爬 ...

  2. vuex深入浅出

    本文主要记录使用vuex的使用场景.重要组成部分和学习心得. 1.说在前面 学习vue有两周的时间了,目前已经对vue的基础使用比较熟悉了.但是一直对vuex的使用耿耿于怀,这么说是因为总是不太理解, ...

  3. Java NIO(三) Buffer

    Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...

  4. 夜色的 cocos2d-x 开发笔记 01

    现在我们来实现在屏幕上出现一只飞机的效果. 首先我们要建立一个场景,显示在屏幕上,创建一个类,RunScence,现在你的项目目录应该是这个样子的. 之前没学过C++,.h文件我理解就是一个声明文件, ...

  5. Smokeping外置邮箱告警

    wget http://xrl.us/cpanm -O /usr/bin/cpanm 1.安装Authen::SASL模块 cpanm --mirror http://mirrors.163.com/ ...

  6. ORACLE不使用工具的情况下获取对象DDL

    set line 200set pagesize 0set long 99999set feedback offset echo off获得表.索引.视图.存储过程.函数的DDL:select dbm ...

  7. ul自适应li问题

    内容提要: li浮动时ul高度为0,解决ul自适应高度的几种方法 在网页设计中,常常需要对li标签做浮动效果,但是在不同浏览器中会遇到兼容性问题,比如IE中会出现ul高度为0的情况,是效果不能达到预期 ...

  8. pl/sql 存储过程执行execute immediate 卡住

    在存储过程中,执行了create table.update table.insert into table 但是在使用pl/sql的存储过程调试的时候,一有问题就直接卡住(标识:执行中.....) 后 ...

  9. 查看flash的版本

    查看当前浏览器的flash版本: http://www.adobe.com/swf/software/flash/about/flashAbout_info_small.swf 针对谷歌浏览器 chr ...

  10. maven项目 servlet jar包冲突

    Failed to process JAR found at URL  for ServletContainerInitializers for context with name [{1}] 启动报 ...