winform list集合怎么 in过滤_你有真正把 Python Set 当作数学集合吗?
视频原文:Set Practice: learning from Python's set types - PyCon 2019,PPT在这,作者为《流畅的 Python》作者 LucianoRamalho
。
set
是 Python 非常重要的一种数据结构,不能包含相同的元素,几乎所有用过 Python 的人都知道, set
有进行列表去重的功能。
但是鲜有人意识到了 set
在数学概念上的意义,那就是集合,能进行交集、并集这些操作。很多时候使用 set
把问题抽象成一个集合问题,能使问题既简单又高效。
来看一下不同语言对于 set
的支持情况:Python、.Net、Ruby 都很好地支持了 set
数据结构。
0x00 Set 基础知识
set comprehension
in 查询
时间复杂度为 O(1)
,应该 set 内部使用的是 hash table,所以判断元素在不在集合里面速度非常快。 in
操作在底层实际上调用的是 set
的 __contains__
方法。
早期的 Python 事实上也是没有 set 的,那时候用的是 dict 来模拟 set。
集合操作
python 内置了很多 operators,能让你像运算数学公式一样操作操作集合。
第20行是德摩根定律。
methods
上述的 operators 底层是 set 定义的很多实用方法,下图在《流畅的 Python》里面有:
非数学相关的方法:
ABC
collections.abc
定义了 Set
数据结构, set
和 mutableset
都实现了 Set
interface。
0x01 Case 1
需求:查询所有满足这种需求的商品:商品的描述信息中保护 query 中出现过的所有单词。(display product if all words in the query appear in the product description.)
go 语言中是没有 set 这种数据结构的,判断语句如下: found
flag 用来判断是不是要结束循环。嵌套循环很不优雅!
事实上这是一个集合问题,假设商品的描述为集合 D,查询语句为集合 Q,问题就变成了判断是否满足 Q ⊂ D。
0x02 Case 2
需求:标记所有 favorited 且不在购物车的商品。
事先让你写一个方法,你第一反应是和我一样,用循环来解决吗?比如这种:
chart_list = []
def filter_goods(goods_list):ret = []for goods in goods_list:if goods.favorited and goods not in charts_list:ret.append(goods)return ret
这其实可以有更优雅的方法,可以把这个问题抽象成一个数学集合问题,设所有标记为喜欢的商品为集合 F,在购物车的商品为集合 C,那么要求的就是 F 和 非C 的交集∩。
如果你像我一样真正热爱计算机科学,喜欢研究底层逻辑,欢迎关注我的微信公众号:
winform list集合怎么 in过滤_你有真正把 Python Set 当作数学集合吗?相关推荐
- python集合的运算、不使用有的运算符_无序的集合:Python中的数学集合运算
全文共8958字,预计学习时长23分钟 图源:unsplash set是Python中无序的集合,它可以用于计算标准数学运算,例如交集.并集.差集和对称差集,Other集合(例如列表.元组和字典)不支 ...
- python列表元组字典集合实验心得_python学习小总结(列表、元组、字典、集合、字符串)...
---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.ext ...
- java.util.list源码_关于fest-util源码包Collections集合工具类过滤、判空、格式化及复制克隆处理...
一.前言 关于fest-util源码包org.fest.util.Collections集合处理类,实现对数组转换List序列集合.集合duplicatesFrom克隆复制.集合判空isEmpty.并 ...
- winform list集合怎么 in过滤_python3基础04字典(dict)和集合(set)
"pythonic生物人"的第37篇分享. 原创不易,点个"赞"或"在看"鼓励下呗! 摘要 本节梳理python中另外两种容器字典(dict ...
- Magento模型集合addFieldToFilter常用过滤条件
下载: 深入理解Magento.pdf 记录一下Magento模型集合Model Collection中addFieldToFilter()方法常用的过滤条件.以下参数也同样适用于产品实体的addAt ...
- python集合的概念_用Python中的集合Set讲解演示高一数学集合的概念
数学编程不分家,用Python可以方便的表示高中数学知识.现在以集合为例进行讲解,高一数学设计集的概念,讲解了交并补的相关知识,用Python中的集合类型可以方便的表示.同时可以借助数学知识更好的理解 ...
- java对list筛选_java8特性快速对list集合的筛选过滤和计算
java8特性快速对list集合的筛选过滤和计算 一.准备工作 1.创建一个Student对象 package com.shiro.test.java8特性; import java.io.Seria ...
- java8特性快速对list集合的筛选过滤和计算
java8特性快速对list集合的筛选过滤和计算 一.准备工作 1.创建一个Student对象 package com.shiro.test.java8特性;import java.io.Serial ...
- java stream 8 常用的操作集合 求和 排序 过滤 拿出对象元素组成集合
举个例子拿一个教师给学生开家长会Java实体 解释 stream 流操作集合建立在内存之上非常的快 以下列举 常用的操作方法 @Data public class OpenClass {private ...
最新文章
- 日本CG大神又整活了!3D建模软件拿来搞面部实时捕捉,网友:效果好得有点吓人...
- DC workshop指导篇1- Setup and Synthesis Flow
- C++ STL 容器 vector
- MySQL 过滤重复数据
- Notification使用详解之一:基础应用
- python mongodb查询速度优化_Mongodb 3 查询优化(语句优化、建索引)
- 并行程序设计导论pdf电子书_并行程序设计导论
- 服务器后台怎么修改网站图片,网站后台修改图片
- VPS云主机的定义和基本优势有哪些
- 文献阅读笔记怎么写?
- 手机更新显示itunes store无法连接服务器,iPhone无法连接App Store、iTunes Store?解决方法有哪些?...
- 多元统计分析及R语言建模(第四版)-----数据,包,资源
- java runnable执行完_java – 如何停止Runnable计划在一定数量的执行后重复执行
- 【西欧经济史第二版】【4】第一章 导言
- CorelDRAW2022体验标准版
- 为什么要配环境变量 ? 环境变量是个啥 ?
- linux如何访问公司网盘,Linux部署私有企业网盘
- Arduino制作俄罗斯方块小游戏(三)程序源码
- Unity 3D 一些对Scene窗口的调整以及摄像头的调整技巧
- 高级职称17计算机,(高级职称计算机考试.doc
热门文章
- 读取gps观测数据o文件的matlab编程,读取GPS观测数据O文件的matlab编程.doc
- 关于使用JAVA正则表达式报java.lang.StackOverflowError错误问题
- PHP文件可限速下载代码
- 网络创新激活西部科技,戴尔2013软件定义网络圆桌会谈的启示
- [转载] python字符串_一文详解Python字符串条件判断方法
- [转载] 消息中间件学习总结(8)——RocketMQ之RocketMQ捐赠给Apache那些鲜为人知的故事
- 版本向量 使用css时正确区分IE版本[转]
- 基本概念----Beginning Visual C#
- JavaScriptjQuery.检测相等和存在
- Centos7——NFS(Network File System)服务