进阶python (集合,collections,itertools)

文章目录

    • 集合
      • 创建集合
      • 集合操作 (交 并 补)
      • 处理集合之间的关系
    • Collections模块
      • counter
      • namedtuple
      • OrderedDict
      • deque

集合

创建集合

# unordered mutable 
myset = set() # 方式1 创建一个空集合,随后使用add方法添加元素

myset.add(1)
myset.add(2)
myset.add(3)

evens = {2,3,4,5} # 方式2 没有key的字典就是一个集合

集合操作 (交 并 补)

unity = myset.union(evens) # 并
interset = myset.intersection(evens) # 交
diff = myset.difference(evens) # 不同元素
print('------------------')
print('集合操作')
print(f'unity is {unity}')
print(f'interset is {interset}')
print(f'diffset is {diff}')
print('-------------------')
myset = {i for i in range(5)}
evens = {i for i in range(3,9)}
print(f'myset is {myset} \nevens is {evens}')

diffset = myset.difference(evens) # 返回两个集合中不同的部分
print(f'diffset is {diffset} \n')

symdiffset = myset.symmetric_difference(evens) # 返回两个集合中不共存的元素
print(f'symmetric difference is {symdiffset}') # no same elements
print('------------------------')

处理集合之间的关系

print('表达关系')
# 复制
setA = {i for i in range(2,8)}
setB = setA
setB.add(9)
print(setB == setA) # setB = setA只是引用

setC = {2,3,4}
# 表达关系
print(setA.isdisjoint(setC)) # if intersection is NULL elements 如果交是空
print(setA.issuperset(setC)) # setA是否是setC的超集,涵盖他的元素
print(setC.issubset(setA)) # setC是否是setA的子集

# imutable set 不可变集合
setD = frozenset([]) # 如果修改会发生KeyError

Collections模块

Collections是python标准库中的一个很常用的模块,内置了双端队列等现成的数据结构

counter

import collections as co

# counter
listABC = ['a'] * 5 + ['b'] * 3 + ['c'] * 2
string_abc = ''.join(listABC)

counter_abc = co.Counter(string_abc)
print(counter_abc)
print(counter_abc.most_common())
print(counter_abc.most_common(1)) # index
print(list(counter_abc.elements())) # ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c']

这是一种会把列表中出现的元素按照出现次数作为value元素本身作为key的字典

# example
import collections as co

lista = ['a'] * 2 + ['b'] * 1 + ['c'] * 3

counter = co.Counter(lista)

print(counter) # Counter({'c': 3, 'a': 2, 'b': 1})

namedtuple

这个类用来构建只有少数属性但是没有方法的对象

# Namedtuple
Card = co.namedtuple('Card','color,value')
Point = co.namedtuple('Point',['x','y'])

poker_1 = Card('heart','A')
pt_1 = Point(1,2)
print('poker : {} \npoint : {}'.format(poker_1,pt_1))

OrderedDict

# OrderedDict 记住添加顺序的字典,3.7版本后没区别
order_dict = co.OrderedDict()
order_dict['b'] = 2
order_dict['c'] = 1
order_dict['d'] = 45
order_dict['a'] = 2
print(order_dict) # OrderedDict([('b', 2), ('c', 1), ('d', 45), ('a', 2)])

deque

# Deque 双端队列
dq = co.deque()

dq.append(1)
dq.appendleft('hello')
# two way to remove the element from deque
# dq.pop()
# dq.popleft()
print(dq) # deque(['hello', 1])
dq.extend(['你好','Keria'])
dq.extendleft(['你好','Zeus']) # 注意顺序 先入在后,是队列的性质
print(dq) # deque(['Zeus', '你好', 'hello', 1, '你好', 'Keria'])
dq.rotate(1)
# rotate之后队列向右平移1位
# deque(['Zeus', '你好', 'hello', 1, '你好', 'Keria'])
# deque(['Keria', 'Zeus', '你好', 'hello', 1, '你好'])
print(dq)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/596681.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式学习——C语言基础——day14

1. 共用体 1.1 定义 union 共用名 { 数据类型1 成员变量1; 数据类型2 成员变量2; 数据类型3 成员变量3; .. }; 1.2 共用体和结构体的区别 1. 结构体每个成员变量空间独立 2. 共用体每个成员变量空间共享 1.3 判断内存大小端 1. 内存大端…

Ranni: Taming Text-to-Image Diffusion for Accurate Instruction Following

Ranni: Taming Text-to-Image Diffusion for Accurate Instruction Following abstract 我们引入了一个语义面板作为解码文本到图像的中间件,支持生成器更好地遵循指令 Related work 最近的工作还通过包含额外的条件(如补全掩码[15,45]、…

天猫商品搜索API返回值说明:关键字搜索如何精准定位商品,精准定位,一键直达!

通过天猫商品搜索API,关键词搜索不再是难题。精准定位,快速找到您心仪的商品,开启便捷购物新时代。掌握API返回值的奥秘,让您的搜索更智能、更高效! 天猫商品搜索API(如item_search)的返回值设计…

xyctf(write up)

ezhttp 因为是一道http的题,前端代码没有什么有效信息,但提示说密码在某个地方,我们用robots建立一个robots.txt文件来看有哪个文件可以访问 补充知识:http请求中via字段表示从哪个网址的服务器代理而来,user-agent表…

纯血鸿蒙APP实战开发——页面间共享组件实例的案例

介绍 本示例提供组件实例在页面间共享的解决方案:通过Stack容器,下层放地图组件,上层放Navigation组件来管理页面,页面可以共享下层的地图组件,页面中需要显示地图的区域设置为透明,并参考触摸交互控制&am…

git使用注意事项事项

以下操作均在gitee平台上实现 文章目录 1、本地仓库和远程仓库有冲突2、git提交自动忽略某些文件3、git无法push提交到远程仓库 1、本地仓库和远程仓库有冲突 在web端修改了文件内容或者删除了文件,本地仓库需要重新把远程仓库拉取到本地,或者强制提交到…

从零开始学RSA: [WUSTCTF2020]情书等5题

1 [WUSTCTF2020]情书 题目 Premise: Enumerate the alphabet by 0、1、2、..... 、25 Using the RSA system Encryption:0156 0821 1616 0041 0140 2130 1616 0793 Public Key:2537 and 13 Private Key:2537 and 937flag: wctf2020{Decryption}解题 前提:用0、…

GreptimeDB 助力国家电网数字换流站打造稳定高效的时序数据底座

电网体系作为现代社会运行的支柱之一,为各行各业、千家万户提供了电能的基本支持。从家庭到企业,医院到学校,交通到通讯,电力电网的应用贯穿始终。近年来,特高压换流站成为国家电网的重点建设工程,“十四五…

YUM源仓库部署和NFS共享存储服务

一.YUM源仓库部署 1.YUM 概述 (1)是基于RPM软件包构建的软件更新机制 (2)可以自动解决依赖关系 (3)所有软件包有集中的YUM软件仓库提供 2.准备YUM源 (1)软件仓库的提供方式&…

计算机组成结构—高速缓冲存储器(Cache)

目录 一、Cache的基本工作原理 1.Cache工作原理 2.命中率 3.Cache的基本结构 4.Cache的改进 二、Cache和主存之间的映射方式 1.直接映射 2.全相联映射 3.组相联映射 三、Cache中主存块的替换算法 四、Cache的写策略 概为了解决 CPU 和主存之间速度不匹配的问题&#x…

基于springboot+vue+Mysql的点餐平台网站

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

redis stream 作为消息队列的最详细的命令说明文档

简介 stream 作为消息队列,支持多次消费,重复消费,ack机制,消息异常处理机制。 涉及到以下几个概念,消息流,消费者组,消费者。 涉及到以下命令 # 添加消息到流中 XADD key [NOMKSTREAM] [&…

Al加码,引爆“躺平式”旅游 | 最新快讯

旅游业正迎来新的技术浪潮。 文|锌刻度,作者|孟会缘,编辑|李季 今年的五一,“微度假”“微旅行”纷纷出圈。 相较于三亚、云南等老牌旅游大热门,人们开始寻找一些不用“人挤人”的小众旅行目的…

谁能取代迈巴赫,征服互联网安全大佬周鸿祎?

‍作者 |老缅 编辑 |德新 4月18日,「周鸿祎卖车」登上了微博热搜。这位360创始人、董事长发微博称:自己做了一个艰难的决定,将把陪伴9年的迈巴赫600给卖掉。 随后,他解释道:「这是因为我需要体验新一代车的感觉。古人…

SQL注入——绕过information

衔接上文,进一步对SQL注入less-1进行禁止information的操作,上文连接如下: SQL注入less-1-CSDN博客 一、对less-1进行编辑 增加一段代码,作用是禁止information字段 二、进行检查 可以看到代码已经生效,禁止用infor…

TypeError报错处理

哈喽,大家好,我是木头左! 一、Python中的TypeError简介 这个错误通常表示在方法调用时,参数类型不正确,或者在对字符串进行格式化操作时,提供的变量与预期不符。 二、错误的源头:字符串格式化…

调用第三方接口——支付宝付款

沙箱环境是支付宝开放平台为开发者提供的用于接口开发及主要功能联调的模拟环境。 参考 登录 - 支付宝 在沙箱环境下,已经分配好了用于模拟测试的应用信息、商家信息、买家信息等 小程序文档 - 支付宝文档中心 内网穿透(支付宝付款需要在公网进行检查…

MybatisPlus也能轻松生成三层架构代码?

👩🏽‍💻个人主页:阿木木AEcru 🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》 💹每一次技术突破,都是对自我能力的挑战和超越。 目录 一、前言三层架构的流程图为什么使用…

为什么需要自动化测试?自动化有哪些优势?

前言 自动化测试,最近些年可谓是大火。招聘上的要求也好,培训班的广告也罢,比比皆是,足以说明它在业内的火爆程度。 虽然说会写自动化测试并不能说明你就很牛批,但是你不会的话,那么很抱歉,你…

保持 Hiti 证卡打印机清洁的重要性和推荐的清洁用品

在证卡印刷业务中,保持印刷设备的清洁至关重要。特别是对于 Hiti 证卡打印机来说,它们是生产高质量证卡的关键工具。保持设备清洁不仅可以保证打印质量和效率,还可以延长其使用寿命。本文将探讨保持 Hiti 证卡打印机清洁卡的重要性&#xff0…
最新文章