【Python练习cookbook】序列高级操作

Python入门之组合数据类型(序列)练习 根据提示,在右侧编辑器补充函数judge(),判断列表ls是否存在重复的元素,存在则返回True,否则返回重复的元素的个数。然后在main()函数输入列表,调用judge()函数判断列表中是否存在重复的元素并输出结果。方法2提示:将所有的10个数字,26个大写字母,26个小写字母共62个字符组成一个字符串,利用random.choice()函数每次从字符串序列中随机取一个字符。本关任务:编写一个函数,接收列表作为参数,如果一个元素在列表中出现了不止一次,则返回True,但不要改变原来列表的值。 阅读详情

不管顺序的去重转为set即可

1.将序列中重复元素去除,并保持顺序

#如果序列items中的值是可哈希的
def dedupe(items):
    seen = set()
    for item in items:
        if item not in seen:
            yield item
            seen.add(item)

 >>> a = [1, 5, 2, 1, 9, 1, 5, 10]
>>> list(dedupe(a))
[1, 5, 2, 9, 10]

写成函数形式是使程序更通用,如读文件去除重复行:

with open(somefile,'r') as f:
    for line in dedupe(f):
        ...
# 如果序列items中的值是不可哈希-这个更通用,也支持可哈希序列
def dedupe(items, key=None):
    seen = set()
    for item in items:
        val = item if key is None else key(item)
        if val not in seen:
            yield item
            seen.add(val)

>>> a = [ {'x':1, 'y':2}, {'x':1, 'y':3}, {'x':1, 'y':2}, {'x':2, 'y':4}]
>>> list(dedupe(a, key=lambda d: (d['x'],d['y'])))
[{'x': 1, 'y': 2}, {'x': 1, 'y': 3}, {'x': 2, 'y': 4}]
>>> list(dedupe(a, key=lambda d: d['x']))
[{'x': 1, 'y': 2}, {'x': 2, 'y': 4}]

其中,key是一个从不可哈希值转为可哈希值的函数,并按key()的返回值去重,若值已经可哈希,则令key=None

                                                                                                                                                                                                          

hashable -- 可哈希

一个对象的哈希值如果在其生命周期内绝不改变,就被称为 可哈希 (它需要具有 __hash__() 方法),并可以同其他对象进行比较(它需要具有 __eq__() 方法)。可哈希对象必须具有相同的哈希值比较结果才会相同。

可哈希性使得对象能够作为字典键或集合成员使用,因为这些数据结构要在内部使用哈希值。

大多数 Python 中的不可变内置对象都是可哈希的;可变容器(例如列表或字典)都不可哈希;不可变容器(例如元组和 frozenset)仅当它们的元素均为可哈希时才是可哈希的。 用户定义类的实例对象默认是可哈希的。 它们在比较时一定不相同(除非是与自己比较),它们的哈希值的生成是基于它们的 id()。

List

 x = [1,2,3]
 y = {x: 9}#生成字典y报错
  Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 TypeError: unhashable type: 'list'

Tuple

z = (5,6)
y = {z: 89}
print(y)
{(5, 6): 89}

 

                                                                                                                                                                                                          

yield详解:

https://pyzh.readthedocs.io/en/latest/the-python-yield-keyword-explained.html

https://www.jianshu.com/p/d09778f4e055

https://blog.youkuaiyun.com/dcrmg/article/details/78128041 


def func(n):
    for i in range(0,n):
        val = yield i #若不调用send,则val值总为None        
        print val
 
f = func(10)
f.next()
f.send(2)
f.send(10)
print f.next()

 

                                                                                                                                                                                                          

with...as语句:

https://www.jianshu.com/p/c00df845323c 

Python入门100题 | 第068题 前言: ???? 运行环境:python3 ???? 作者:K同学啊 ???? 选自专栏:《Python入门100题》 ???? 优秀专栏:《Matplotlib实例教程》 ???? 推荐专栏:《小白入门深度学习》 ???? 精选专栏:《深度学习100例》 题目: 有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数 代码实现: if __name__ == '__main__': n = int(input('整数的个数为 :\n')) m = i 阅读详情

相关推荐

第十章Python列表习题及答案--中文

第十章Python列表习题及答案--中文

Python习题(附答案)6序列类型

头歌实践教学平台——​Python编程技术。

焚花入骨 焚歌为引——Sayuri《月と花束》 6236

Python练习题

python练习题,1~11单元,分别简介了元组,列表,字典,类等

天池Python练习11-序列

序列的内置函数 list(sub)把一个迭代对象转换为列表 tuple(sub) 把一个迭代对象转化为元组 str(obj) 把obj对象转换为字符串 len(s) 返回对象(字符、列表、元组等)长度或元素个数 max(sub) 返回序列或者参数集合中的最大值 min(sub) 返回序列或参数集合中的最小值 sum(iterable[, start=0]) 返回序列 iterable 与可选参数 start 的总和 sorted(iterable, key=None, reverse=F

StrawBerryTreea的博客 1573

python圣经

python圣经,练手好项目,Python 圣经:构建11个项目并从初学者到专业人员

trae CN 配置ida的mcp教程

本文介绍了在TraeCN中配置IDA Pro MCP服务的完整步骤:1)准备IDA Pro 9.0+和Python 3.11+环境;2)安装MCP服务端并配置插件;3)生成MCP配置文件;4)在TraeCN中添加HTTP类型MCP服务(默认端口13337);5)测试连接。重点说明了HTTP配置方式的操作流程,包括手动启动服务、正确填写JSON配置等关键环节。

2401_87915504的博客 1956

实验二: 序列练习

一、实验目的 1、掌握Python序列的基本操作,包括:列表、元组、字典和集合; 2、熟练掌握切片操作; 3、掌握运用列表推导式、生成器表达式等; 4、熟练使用Python内置函数max()、min()、sorted()等。 二、实验题目及结果 1、练习列表、元组的基本操作:+、*、len()、count()、[]、in等。练习列表元素的增加、删除、访问和排序等。 编程题1:输入一个包含若干整数的列表,输出该列表中元素的最大值、最小值,元素的个数,列表元素的和等。并输出一个新列表,要求新列表中

weixin_49811734的博客 813

告别安装报错!保姆级教程:用阿狸狗破戒大师V3.2.6搞定Cadence 17.4完整安装与补丁

本文提供Cadence 17.4的完整安装与破解教程,特别针对国内用户常见问题优化。从前期准备、镜像处理到阿狸狗破戒大师V3.2.6的智能破解,再到补丁管理与性能调优,详细指导每一步操作,确保一次性安装成功并提升设计效率。

weixin_30632089的博客 837

Python--序列

一、定义。

墨上烟雨 2283

Obsidian与GPT协作:数学公式从KaTeX到MathJax的无缝转换实践

本文针对Obsidian用户从GPT等AI助手复制数学公式时遇到的KaTeX与MathJax格式不兼容问题,提供了高效的解决方案。重点介绍了KaTeX to MathJax插件的核心作用,它能自动将AI生成的KaTeX格式公式(如\(...\))无缝转换为Obsidian默认支持的MathJax格式($...$),实现复制粘贴后公式即时渲染,极大提升了数学笔记与AI协作的效率和流畅度。

weixin_29209825的博客 137

Linux磁盘扩容实战:用parted命令无损扩展/data分区(附常见报错解决方案)

本文详细介绍了在Linux生产环境中使用parted命令对已挂载的/data分区进行在线磁盘扩容的完整实战流程。通过风险评估、状态检查、parted工具深度解析及实战演练,指导用户安全完成动态扩容,并提供了常见报错如'Partition is being used'、MBR 2TB限制等的解决方案,确保业务不中断、数据不丢失。

weixin_29207439的博客 297

Python基础训练题之序列

例如: d={"中国":'北京',"日本":'东京','美国':'纽约'},分别用d.get('西班牙')和d.setdefault('西班牙')添加不存在的键,得出字典d的结果;(2).创建一个字典,在其中存储三条大河流及其流经的国家{"长江":"中国","尼罗河":"埃及","亚马逊":"巴西"}使用循环遍历将该字典中每条河流的名字和每个国家的分别打印出来,并为每条河流打印一条信息,如“长江流经中国”。(4).用help(dict)命令查看fromkeys函数,说明此函数的作用。

weixin_68609410的博客 721

【OpenClaw企业级智能体实战】第09篇:OpenClaw金融投研实战:17个场景+完整代码,打造专属数字研究员

金融投研面临信息过载、流程重复、数据安全合规三大核心痛点,OpenClaw作为本地部署的新一代AI智能体,凭借“长期记忆+主动执行+数据不出域”的优势,成为券商分析师集体追捧的效率工具。本文基于8家头部券商公开研报,拆解OpenClaw在金融投研的17个核心应用场景(信息处理、研报撰写、量化策略、流程自动化),详解原理、技术选型、实操流程,并提供可直接运行的完整代码与执行结果。文章兼顾新手入门与进阶提升,强调安全隔离部署与幻觉防范,读者可按步骤搭建专属投研智能体,将信息处理、数据整理等重复工作效率提升80%

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 674

AiPy中的Python进阶技巧:流畅Python与Cookbook实践

AiPy是一个专注于Python机器学习、深度学习算法开发的学习资源分享项目,提供了丰富的Python进阶学习资料。本文将结合项目中的《流畅的Python》和《Python Cookbook》第三版中文等资源,为你介绍实用的Python进阶技巧。 ## 一、掌握Python高级特性 ### 1.1 深入理解迭代器与生成器 迭代器和生成器是Python中高效处理序列数据的重要工具。通过使用生成器

gitblog_00739的博客 815

机器视觉应用工程师职位深度解析与面试指南

广东奥普特科技招聘机器视觉应用工程师,要求大专以上理工科专业背景,熟悉C/C++或PLC编程,具备自动化设备调试经验。岗位职责包括视觉项目方案评估、系统安装调试、售后技术支持及异常处理,需接受外派出差。该职位面向专业对口的应届生或实习生,强调动手能力、沟通技巧和吃苦耐劳精神。机器视觉工程师需掌握图像处理算法、硬件配置等核心技术,在工业自动化领域具有良好发展前景。求职者应注重编程能力和实践经验的积累,以胜任这一技术密集型岗位。

郑伟强dev的专栏 433

中国各城市土地利用类型(城市功能)数据集(shp)

中国各城市土地利用类型(城市功能)数据集时间:2018年全国范围的城市用地类型数据(居住/商业/交通用地等共计11类)分类:居住用地、商业用地、工业用地、医疗设施用地、体育文化设施用地、交通场站用地、绿地等用地类型含城市编码、一级分类5个、二级分类11个1、上海市。

你好,我是小张同学! 1337

python cookbook源码_Python Cookbook目录

第1章 数据结构和算法 11.1 将序列分解为单独的变量 11.2 从任意长度的可迭代对象中分解元素 31.3 保存最后N个元素 51.4 找到最大或最小的N个元素 71.5 实现优先级队列 91.6 在字典中将键映射到多个值上 111.7 让字典保持有序 131.8 与字典有关的计算问题 141.9 在两个字典中寻找相同点 151.10 从序列中移除重复项且保持元素间顺序不变 171.11 对切...

weixin_28929201的博客 441

拆开它的“身体”,看懂割草机器人的五层系统架构

这篇文章深入解析了智能割草机器人的五层系统架构。机械层采用铝合金一体式车架和独立悬挂刀盘系统;电子层配备双处理器和多种传感器;固件层实现毫秒级安全响应;算法层融合多种定位技术实现厘米级精度;云服务层提供远程管理和AI优化。这套系统通过精密协同实现了智能割草的全流程闭环,展现了从机械结构到云端智能的完整技术栈,为户外智能设备设立了新的技术标杆。

智能硬件研发,欢迎交流 198

Bioinformatics with Python Cookbook 第二版教程

### 项目概述 `Bioinformatics with Python Cookbook` 第二版是由 Packt Publishing 出版的一本关于生物信息学的书籍,旨在帮助读者使用现代 Python 生物信息学库和应用程序进行前沿的计算生物学研究。本书涵盖了下一代测序、基因组学、宏基因组学、群体遗传学、系统发育学和蛋白质组学等领域。 ### 主要内容 - **下一代测序数据处理**:学习...

gitblog_00553的博客 886

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

(转)Python cookbook学习总结

原创 Python cookbook学习总结 ...

qq_41978139的博客 204

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python基础--序列(列表,序列,字典,集合)--练习

1、列表简介 # 创建列表,通过[]来创建列表 my_list = [] # 创建了一个空列表 # print(my_list , type(my_list)) # 列表存储的数据,我们称为元素 # 一个列表中可以存储多个元素,也可以在创建列表时,来指定列表中的元素 my_list = [10] # 创建一个只包含一个元素的列表 # 当向列表中添加多个元素时,多个元素之间使用,隔开 my_...

Andy_Hanna的专栏 450

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python数据结构与算法讲解_详解python数据结构和算法

详解python数据结构和算法

weixin_39918682的博客 431

Python经典基础习题(序列结构)

Python经典基础习题(序列结构)

AQIANKE的博客 3079

【python第四章——序列(列表、元组、字典、集合、字符串、正则)】

python实习第四章——序列(列表、元组、字典、集合、字符串、正则)

qq_53210746的博客 1832

第一章:数据结构和算法

第一章:数据结构和算法 — python3-cookbook 3.0.0 文档 1.1 将序列分解为单独的变量 问题:一个包含N个元素的元组或序列,将它里面的值解压后同时赋值给N个变量 解决:任何可迭代对象都可以通过一个简单的赋值操作分解为单独变量,要求变量综述和结构必须与序列吻合,数量不匹配会报错 # 元组 >>> point = (1,2) >>> x,y = p >>> x,y (1, 2) >>> x 1 >&g

Jeff_Darker的博客 328

Python基础刻意练习——Day5:字符串与序列

Python基础刻意练习——Day5:字符串与序列

nanashi_F的博客 725
上一篇: 【Python练习cookbook】字典dictionary高级操作
下一篇: 【Python练习cookbook】切片slice高级应用
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值