前四期到博客找:https://blog.csdn.net/hebtu666

我们继续说一些好用的函数

split

Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串。

语法:

str.split(str="", num=string.count(str))

简化:

str.split("")

结合第四期所学知识,我们可以写出这一行代码

print(" ".join(input().split(" ")[::-1]))

实现功能:给定一个句子(只包含字母和空格),将句子中的单词位置反转,单词用空格分割,单词之间只有一个空格,前后没有空格。比如:(1)“hello xiao mi” - >“ mi xiao你好“

再举一例:

将两个整型数组按照升序合并,并且过滤掉重复数组元素

输入参数:

int* pArray1 :整型数组1

intiArray1Num:数组1元素个数

int* pArray2 :整型数组2

intiArray2Num:数组2元素个数

对于python来说,给个数没什么卵用。

a,b,c,d=input(),list(map(int,input().split())),input(),list(map(int,input().split()))
print("".join(map(str,sorted(list(set(b+d))))))

我们把最近的知识结合起来做一道题:

输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

result=""
for i in input()[::-1]:if i not in result:result+=i
print(result)

还有很多具体的简洁操作,这里就不再举例子了,多体会吧。

好,我们继续其它函数。

filter

Python内建的filter()函数用于过滤序列。

map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

简单例子,删掉偶数:

def is_odd(n):return n % 2 == 1list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]

我们可以用所学知识实现埃氏筛:

埃氏筛相关知识:https://blog.csdn.net/hebtu666/article/details/81486370

本代码非原创:

#先构造一个从3开始的奇数序列:
def _odd_iter():n = 1while True:n = n + 2yield n
#这是一个生成器,并且是一个无限序列。#筛选函数
def _not_divisible(n):return lambda x: x % n > 0
#生成器
def primes():yield 2it = _odd_iter() # 初始序列while True:n = next(it) # 返回序列的第一个数yield nit = filter(_not_divisible(n), it) # 构造新序列

利用filter()不断产生筛选后的新的序列

Iterator是惰性计算的序列,所以我们可以用Python表示“全体自然数”,“全体素数”这样的序列,而代码非常简洁。

sorted

复制过来的,因为写的很好很好,相比之下,我自己写的太差劲了。

>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
#可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:
>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]

我们再看一个字符串排序的例子:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'])
['Credit', 'Zoo', 'about', 'bob']

默认情况下,对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面。

现在,我们提出排序应该忽略大小写,按照字母序排序。要实现这个算法,不必对现有代码大加改动,只要我们能用一个key函数把字符串映射为忽略大小写排序即可。忽略大小写来比较两个字符串,实际上就是先把字符串都变成大写(或者都变成小写),再比较。

这样,我们给sorted传入key函数,即可实现忽略大小写的排序:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']

要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']

从上述例子可以看出,高阶函数的抽象能力是非常强大的,而且,核心代码可以保持得非常简洁。

sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数。

基础技巧总结持续更新。。。。。。

python基础技巧总结(五)相关推荐

  1. Python 基础课程第五天

    Python 基础课程第五天 第四章:控制语句 循环结构 for循环和可迭代对象遍历 可迭代对象 range 对象 嵌套循环和综合练习 break 语句 continue 语句 else 语句 循环代 ...

  2. python基础技巧总结(一)

    最近总结一下python基础知识,就暂时弃坑了. 本文总结只属于python的一些骚操作... 后面文章自行去博客学习交流 原地交换 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方 ...

  3. python中继承和组合的区别_Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类...

    一.前提回忆: 1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均 ...

  4. Python基础(十五)——函数

    本文以Python3以上为学习基础. 1.函数概念 对于函数,我们先看看数学中:y=x+1. 这就是一个数学的一次函数.不过更多是写作f(x) = x + 1.我肯可以看到,我们给x不一样的值,最后的 ...

  5. Python基础总结(五) 组合数据类型

    目录 第五章:组合数据类型 一.列表: (一)列表元素查找: (二)列表元素添加: (三)列表元素排序: (四)列表元素修删: (五)列表生成式(推导式): (六):zip() 和enumerate( ...

  6. python基础学习(五)第一次修改

    python3.5使用 第五天: 我这次要讲的东西是循环是什么呢,我用用张流程图来告诉大家(主要是流程图容易理解) 对的就是这样当条件满足时就结束循环 1 while True: 2 print('h ...

  7. Python基础教程(五):数字、字符串

    Python 数字 Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型得值,将重新分配内存空间. 以下实例在变量赋值时数字对象将被创建: var1 = 1 ...

  8. python 输入字符串_输入输出,字符串如影随形 | Python基础连载(五)

    更好的排版阅读体验,请移步 微信端 开篇 前面两期详细的介绍了字符串及其相关操作,在今后的编程中,你将经常和字符串打交道.一个比较常见的场景就是输入输出,所以本期将结合字符串,讲述最基本同时也是最常用 ...

  9. python基础技巧总结(四)

    前三期请到我博客里找 https://blog.csdn.net/hebtu666 我们继续总结 except的用法和作用 try/except: 捕捉由PYTHON自身或写程序过程中引发的异常并恢复 ...

最新文章

  1. web 前端绘制折线_前端每日实战:苦练 CSS 基本功——图解辅助线的原理和画法...
  2. 【AI初识境】激活函数:从人工设计到自动搜索
  3. Shrio 自定义算法登录认证
  4. 锐动SDK针对游戏直播提出的解决方案
  5. mysql使用索引扫描做排序_「Mysql索引原理(八)」使用索引扫描做排序
  6. gcc android开发环境,[RK3399][Android7.1]开发环境搭建
  7. Jetbrains 系 IDE 编辑器的代码提示功能
  8. MATLAB使用教程
  9. ARM嵌入式系统网络驱动中的重要数据结构
  10. OSI模型第一层物理层
  11. 反欺骗的艺术-摘记(持续更新中)
  12. webservice框架
  13. BT3下载 与 BT3 U盘版制作
  14. 诛仙服务器技能修改,【诛仙422】自己修改的特色一键端(2018.10.11号更新修复BOOS不刷新BUG)技能修改补丁...
  15. 实现语音视频录制源码分享
  16. vue.runtime.esm.js?2b0e:619 [Vue warn]: Property “XX“ must be accessed with “$data._tos“ because
  17. 强大的文件管理利器-恒辉通用文件管理工具
  18. 机械原理习题-(附答案)
  19. Android4.0 ext disk auto mount [including sd mmc sata udisk]
  20. 使用hexo+github pages搭建博客

热门文章

  1. 摄像头图像分析目标物体大小位置_摄像头的原理、组成、选型及应用
  2. windows下手动配置ipv6地址
  3. Asterisk权威指南/第六章 拨号计划基础
  4. 信道容量受哪三个要素_影响信道容量的主要因素有哪些
  5. 【转】1.1【MySQL】基本SQL语句大全
  6. 【转】C#开发笔记之05-迭代器中的状态机(State Machine)到底是什么?
  7. 开源干货!.NET Core + Vue.js通用动态权限(RBAC)管理系统框架[DncZeus]开源
  8. 第六节:框架搭建之EF的Fluent Api模式的使用流程
  9. 将 Palo Alto Networks 连接到 Azure Sentinel
  10. 【转】[SharePoint 开发详解] 一个Feature中使用SPGridView的几个Tips