c++双向列表释放_Python列表生成式12个小功能,你常用哪几个?
作者 | zglg
来源 | Python与算法社区
原文 | Python列表生成式12个小功能,你常用哪几个?
python里[]
表示一个列表,对容器类型的数据进行运算和操作,生成新的列表最高效、快速的办法,就是列表生成式。
它优雅、简洁,值得大家多多使用!今天盘点列表生成式在工作中的主要使用场景。
入门
1
range快速生成连续列表
In [1]: a = range(11)In [2]: a
Out[2]: range(0, 11)In [3]: list(a)
Out[3]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2
对列表里面的数据进行运算后重新生成一个新的列表:
In [5]: a = range(0,11)In [6]: b = [x**2 for x in a]In [7]: b
Out[7]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
3
对一个列表里面的数据筛选,只计算[0,11) 中偶数的平方:
In [10]: a = range(11)In [11]: c = [x**2 for x in a if x%2==0]In [12]: c
Out[12]: [0, 4, 16, 36, 64, 100]
4
前面列表生成式都只传一个参数x,带有两个参数的运算:
In [13]: a = range(5)In [14]: b = ['a','b','c','d','e']
In [20]: c = [str(y) + str(x) for x, y in zip(a,b)]
In [21]: c
Out[21]: ['a0', 'b1', 'c2', 'd3', 'e4']
5
结合字典,打印键值对:
In [22]: a = {'a':1,'b':2,'c':3}
In [23]: b = [k+ '=' + v for k, v in a.items()]
In [24]: b = [k+ '=' + str(v) for k, v in a.items()]
In [25]: b
Out[25]: ['a=1', 'b=2', 'c=3']
6
输出某个目录下的所有文件和文件夹的名称:
In [33]: [d for d in os.listdir('d:/summary')]
Out[33]: ['a.txt.txt', 'python-100']
7
列表中所有单词都转化为小写:
In [34]: a = ['Hello', 'World', '2019Python']In [35]: [w.lower() for w in a]
Out[35]: ['hello', 'world', '2019python']
进阶
8
将值分组:
In [36]: def bifurcate(lst, filter):...: return [...: [x for i,x in enumerate(lst) if filter[i] == True],...: [x for i,x in enumerate(lst) if filter[i] == False]...: ]...:
In [37]: bifurcate(['beep', 'boop', 'foo', 'bar'], [True, True, False, True])Out[37]: [['beep', 'boop', 'bar'], ['foo']]
9
进一步抽象例子8,根据指定函数fn 对lst 分组:
In [38]: def bifurcate_by(lst, fn):...: return [...: [x for x in lst if fn(x)],...: [x for x in lst if not fn(x)]...: ]...:In [39]: bifurcate_by(['beep', 'boop', 'foo', 'bar'], lambda x: x[0] == 'b')
Out[39]: [['beep', 'boop', 'bar'], ['foo']]
10
返回可迭代对象的差集,注意首先都把a, b
用set 包装
In [53]: def difference(a, b):...: _a, _b =set(a),set(b)...: return [item for item in _a if item not in _b]...:...:In [54]: difference([1,1,2,3,3], [1, 2, 4])
Out[54]: [3]
11
进一步抽象10,根据函数fn 映射后选取差集,如下列表元素分别为单个元素和字典的例子:
In [61]: def difference_by(a, b, fn):...: ...: _b = set(map(fn, b))...: ...: return [item for item in a if fn(item) not in _b]...: ...:...:In [62]: from math import floor...: difference_by([2.1, 1.2], [2.3, 3.4],floor)
Out[62]: [1.2]In [63]: difference_by([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], lambda v : v['x'])
Out[63]: [{'x': 2}]
12
过滤非重复值,结合list 的count( 统计出元素在列表中出现次数):
In [64]: def filter_non_unique(lst):...: return [item for item in lst if lst.count(item) == 1]In [65]: filter_non_unique([1, 2, 2, 3, 4, 4, 5])
Out[65]: [1, 3, 5]
熟练操作以上12个例子,就算掌握python 中非常有用的列表生成式。
搜索进入CDA官方小程序,解锁更多新鲜资讯和优质内容,还有很多免费试听课程,不要错过哟!
c++双向列表释放_Python列表生成式12个小功能,你常用哪几个?相关推荐
- python列表生成式和map效率_Python列表生成式12个小功能,你常用哪几个?
作者 | zglg来源 | Python与算法社区 []表示一个列表,对容器类型的数据进行运算和操作,生成新的列表最高效.快速的办法,就是列表生成式. 它优雅.简洁,值得大家多多使用!今天盘点列表生成 ...
- python列表知识点_Python列表知识点
1.列表基础 list.append(x) 在列表的末尾添加一个元素.相当于 a[len(a):] = [x] . list.extend(iterable) 使用可迭代对象中的所有元素来扩展列表.相 ...
- python 列表解析式_python列表解析式,字典解析式,集合解析式和生成器
一.列表解析式(列表推倒式): 功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表. 1 lst = [1, 3, 5, 8, 10] 2 ll = [x+x for x in ls ...
- python列表操作程序_Python列表操作,比较常见的10个问题
列表是比较常用的数据类型之一,本文整理了 StackOverflow 上关于列表操作被访问较多的10个问答,如果你在开发过程中遇到这些问题,不妨先思考一下如何解决. 1.迭代列表,如何访问列表下标索引 ...
- python列表引用_Python列表(list)的方法调用
#list # n = [12,34,"yue"] # v = n.append(27) #增加元素,注意是在尾部增加,由于列表是可修改的,所以是在原列表中增加,与字符串存在区别 ...
- python列表去重_python列表去重
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 方法一:利用集合去重 # ! usrbinpython3# -*- coding ...
- python列表乘法运算_Python列表基本运算和元组
成员运算符 in 我们用它来判断指定字符串是否包含某些字符,现在我们用来判断一个元素是否在一个列表中,格式为 元素 in 列表.这是一个布尔表达式,如果元素在列表中,结果为布尔值 True,反之为 F ...
- python列表分割_python列表分割
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! ①list从list列表下标a起取值,每次加b在取值,直到大于或等于list长度 ...
- python字典键值可以是元组或列表吗_Python列表、元组、字典、集合的内置使用方法...
列表: 是一种可以存储多个值得数据容器 内容是有序的 可以存储任何数据类型 可以存储重复的元素 是可变类型(当内容发生变化时id不变) 元组: 也是一种可以存储多个值得数据容器 元组中的元素不可以被修 ...
最新文章
- [转][android深入学习]android窗口管理机制
- 嫉恨别人不如审视自己
- linux anacron 定时任务 计划任务
- PathFinding.js – 综合性的 JavaScript 路径查找库
- python拼写检查_Python 怎样写一个拼写检查器
- Android通用开发笔记和高性能安卓开发框架源码
- PHP版本区别5与7:性能 64位 运算符 输入类型 返回类型 匿名类;7改进1.变量存储空间2.数组结构3.函数调用机制
- PHP递归删除目录面试题,PHP 递归删除目录中文件
- c语言数据结构插入算法说明,C语言数据结构插入算法
- vb红绿灯自动切换_VB红绿灯程序.doc
- 【BZOJ4035】数组游戏,博弈论+分块乱搞
- BZOJ 2337 XOR和路径(概率DP)
- 每一次结束只是一次新的起点,深有体会。
- postman的基础使用
- javascript的模块开发方法;
- swift基础知识一
- oracle11g | 行转列
- 为什么快捷指令无法将媒体转换为文本_刘星文:快捷指令这个神器,让你的 iPhone 好用到飞起...
- 使用单链表统计英文文本单词个数
- Hadoop-The variance for this alert is **MB which is 20% of the **MB average (**MB is the limit)
热门文章
- 买房前需要注意的事项有哪些
- 《计算机网络》第七章:应用层(The Application Layer)
- php好玩的源码_PHP 经典有趣的算法
- 傅里叶变换@(stft和istft)
- CSS定位和浮动(吸顶、居中)
- c语言中如何存储日志,C语言解析日志,存储数据到伯克利DB
- UGUI字体不清楚——终极探索
- python2.7中没有zlib库的解决方案(zipimport.ZipImportError: can't decompress data; zlib not available)
- java页面跳转t赋值_java servlet 几种页面跳转的方法及传值
- OpenShift 4 之Knative(3) - 通过事件触发Serverless服务