最近刷LeetCode,自己自娱自乐完之后去discussion看大佬们的各种巧妙解法,总是止不住的双击666……加上最近Python3用的比较多(虽然Python实在不推荐跑算法题目,一是运行效率太低,二是Pythonic模式感觉是在作弊,只有在不考虑效率的情况下使用Python实现非Pythonic的算法设计还可以说的过去,且当作熟悉Python了),总结了一下常用的函数及方法,与大家分享也可以自己温故,与C++ STL还是有很多重叠的。

函数

  • next() 函数

返回迭代器的下一个项目。

next(iterator[, default])

iterator -- 可迭代对象

default -- 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。

  1. #case 1
  2. # 首先获得Iterator对象:
  3. it = iter([1, 2, 3, 4, 5])
  4. # 循环:
  5. while True:
  6. try:
  7. # 获得下一个值:
  8. x = next(it)
  9. print(x)
  10. except StopIteration:
  11. # 遇到StopIteration就退出循环
  12. break
  13. 输出:
  14. 1
  15. 2
  16. 3
  17. 4
  18. 5
  19. #case 2
  20. it = iter([1, 2, 3, 4, 5])
  21. while True:
  22. x = next(it, 'a')
  23. print(x)
  24. if x == 'a':
  25. break
  26. 输出:
  27. 1
  28. 2
  29. 3
  30. 4
  31. 5
  32. a
  • filter() 函数

用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

  1. filter(function, iterable)
  2. def is_odd(n):
  3. return n % 2 == 1
  4. newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
  5. 输出:[1, 3, 5, 7, 9]
  6. a = list(filter(lambda x: x % 2 == 0, range(10)))
  7. print(a)
  8. 输出:[0, 2, 4, 6, 8]
  • zip()函数

用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

  1. zip([iterable, ...])
  2. >>>a = [1,2,3]
  3. >>> b = [4,5,6]
  4. >>> c = [4,5,6,7,8]
  5. >>> zipped = zip(a,b) # 打包为元组的列表
  6. [(1, 4), (2, 5), (3, 6)]
  7. >>> zip(a,c) # 元素个数与最短的列表一致
  8. [(1, 4), (2, 5), (3, 6)]
  9. >>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
  10. [(1, 2, 3), (4, 5, 6)]
  • any()函数

any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。

元素除了是 0、空、FALSE 外都算 TRUE。

  1. any(iterable)
  2. >>> any(['a', 'b', '', 'd']) # 列表list,存在一个为空的元素
  3. True
  4. >>> any([0, '', False]) # 列表list,元素全为0,'',false
  5. False
  • all()函数

all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。

元素除了是 0、空、None、False 外都算 True。

  1. all(iterable)
  2. >>> all(['a', 'b', 'c', 'd']) # 列表list,元素都不为空或0
  3. True
  4. >>> all(['a', 'b', '', 'd']) # 列表list,存在一个为空的元素
  5. False
  • int()函数

用于将一个字符串或数字转换为整型。

class int(x, base=10)

x -- 字符串或数字。

base -- 进制数,默认十进制。

  1. >>> int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
  2. 18
  3. >>> int('0xa',16)
  4. 10
  5. >>> int('10',8)
  6. 8
  • divmod()函数

把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

  1. divmod(a, b)
  2. >>>divmod(7, 2)
  3. (3, 1)
  • enumerate()函数

用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

  1. enumerate(sequence, [start=0])
  2. >>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
  3. >>> list(enumerate(seasons))
  4. [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
  5. >>> list(enumerate(seasons, start=1)) # 下标从 1 开始
  6. [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
  • eval()函数

用来执行一个字符串表达式,并返回表达式的值。

eval(expression[, globals[, locals]])

expression -- 表达式。

globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。

locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

  1. >>>x = 7
  2. >>> eval( '3 * x' )
  3. 21
  4. >>> a = "123"
  5. >>> type(a)
  6. <class 'str'>
  7. >>> b = eval(a)
  8. >>> b
  9. 123
  10. >>> type(b)
  11. <class 'int'>
  • reduce() 函数

会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:

用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

  1. reduce(function, iterable[, initializer])
  2. >>>def add(x, y) : # 两数相加
  3. ... return x + y
  4. ...
  5. >>> reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5
  6. 15
  7. >>> reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数
  8. 15

方法

  • 字典get()方法

返回指定键的值,如果值不在字典中返回默认值。

dict.get(key, default=None)

  1. dict = {'Name': 'Zara', 'Age': 27}
  2. print "Value : %s" % dict.get('Sex', "Never")
  3. 输出:Value : Never
  • isalnum()方法

检测字符串是否由字母和数字组成。如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。

str.isalnum()

  1. str = "this2009"; # 字符中没有空格
  2. print str.isalnum();
  3. 输出:
  4. True
  5. str = "this is string example....wow!!!";
  6. print str.isalnum();
  7. 输出:
  8. False
  • strip()方法

用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

str.strip([chars])

  1. str = "00000003210abc1230000000";
  2. print(str.strip( '0' )) # 去除首尾字符 0
  3. 输出:
  4. 3210abc0123
  5. str2 = " abc "; # 去除首尾空格
  6. print(str2.strip())
  7. 输出:
  8. abc
  • join()方法

用于将序列中的元素以指定的字符连接生成一个新的字符串。

str.join(sequence)

  1. str = "-";
  2. seq = ("a", "b", "c"); # 字符串序列
  3. print str.join( seq );
  4. 输出:
  5. a-b-c
  • rjust()方法

返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。

str.rjust(width[, fillchar])

  1. str = "this is string example....wow!!!";
  2. print str.rjust(50, '0');
  3. 输出:
  4. 000000000000000000this is string example....wow!!!

ljust()方法同理

位运算符

与(&)和或(|)运算符就不说了,主要来看看下面几个位运算符:

a = 0011 1100

b = 0000 1101

^ 按位异或运算符:当两对应的二进位相异时,结果为1

(a ^ b) 输出结果 49 ,二进制解释: 0011 0001

~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1

(~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。

<< 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。

a << 2 输出结果 240 ,二进制解释: 1111 0000

>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数

a >> 2 输出结果 15 ,二进制解释: 0000 1111

Python3常用函数、方法总结(持续更新…)的更多相关文章

  1. pytorch常用函数总结(持续更新)

    pytorch常用函数总结(持续更新) torch.max(input,dim) 求取指定维度上的最大值,,返回输入张量给定维度上每行的最大值,并同时返回每个最大值的位置索引.比如: demo.sha ...

  2. ORACLE常用函数汇总(持续更新中....)

    在使用ORACLE过程中,把一些常用的函数的相关用法,注意事项进行简单的汇总,便于自己查询参考. DBMS_RANDOM包 dbms_random是一个可以生成随机数值或者字符串的程序包.这个包有in ...

  3. 一些实验中用过的python函数/方法(持续更新)

    衡量运行时间 很多时候你需要计算某段代码执行所需的时间,可以使用 time 模块来实现这个功能. import time startTime = time.time() # write your co ...

  4. java开发中遇到的问题及解决方法(持续更新)

    摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...

  5. Python语言上机题实现方法(持续更新...)

    Python语言上机题实现方法(持续更新...) 1.[字符串循环左移]给定一个字符串S,要求把S的前k个字符移动到S的尾部,如把字符串"abcdef"前面的2个字符'a'.'b' ...

  6. iOS:开发常用GitHub开源项目(持续更新)

    IOS开发常用GitHub开源项目(持续更新) 数据类 开源库 作者 简介 AFNetworking Mattt 网络请求库 ASIHTTPRequest pokeb 网络请求库 Alamofire ...

  7. Python 数据类型,常用函数方法分类

    Python基本数据类型:(int) 字符串(str)列表(list)元组(tuple)字典(dict)布尔(bool) python中可以简单使用 类型(数据)创建或转换数据 例: #字符串转数字 ...

  8. PHP常用函数归类【持续整理中......】

    一.PHP基础语法   变量,常量     严格区分大小写,但内置结构或关键字无所谓(echo)     命名:不能以数字,空格,.来开头,但是可以有汉字,eg:$变量="aa"; ...

  9. Android开发中常用的库总结(持续更新)

    这篇文章用来收集Android开发中常用的库,都是实际使用过的.持续更新... 1.消息提示的小红点 微信,微博消息提示的小红点. 开源库地址:https://github.com/stefanjau ...

  10. PHP常用函数归类【持续整理】

    学习了这么久PHP,基础知识总感觉不牢靠,尤其是数组,字符串函数的应用,全部手敲过次手,做出总结都是基础,在回顾一下吧. 一.PHP基础语法 变量,常量     严格区分大小写,但内置结构或关键字无所 ...

随机推荐

  1. spring为什么推荐使用构造器注入

    一.前言 ​ 项目中遇到一个问题:项目启动完成前,在A类中注入B类,并调用B类的某个方法. 那么调用B类的这个方法写在哪里呢,我选择写到构造器里,但是构造器先于Spring注入执行,那么执行构造器时, ...

  2. 使用Selenium IDE和webDriver进行自动化软件测试

    1.Selenium IDE 在Chrome浏览器上登录谷歌应用商店可以安装Selenium IDE插件(3.0以上版本的Selenium IDE不支持录制的脚本导出,所以这里使用到的是应用商店上的另 ...

  3. 对低开销的静态组件使用v-once

    <body> <div id="app"> <terms-of-service></terms-of-service> </d ...

  4. echarts折线图

    https://echarts.baidu.com/examples/#chart-type-bar

  5. MVP 实践

    今天有时间看了看google的官方文档,下载todo源码,仔细研读了一下,觉得其思想对开发还是有很大帮助的.个人认为,MVP通过Activity与业务逻辑的解耦,其作为Controller的职责更加单 ...

  6. 使用numpy与matplotlib.pyplot画图

    使用numpy与matplotlib.pyplot画图 1. 折线图 1 # -*- enccoding:utf-8 -*- 2 import numpy as np 3 import matplot ...

  7. maven管理jar,pom.xml导入spring依赖

    <properties> <junit.version>4.12</junit.version> <spring.version>4.3.9.RELEA ...

  8. Nim函数调用的几种形式

    Nim函数调用的几种形式 Nim 转载条件:如果你需要转载本文,你需要做到完整转载本文所有的内容,不得删改文内的作者名字与链接.否则拒绝转载. 关于nim的例行介绍: Nim 是一门静态编译型的系统级 ...

  9. L360 Most People Spend Their Time in Just 25 Places

    Some people are always out on the town, going to concerts, restaurant openings, you name it. They're ...

  10. 安装oracle11g INS-30131执行安装程序验证所需的初始设置失败的解决方法

    安装oracle11g [INS-30131] 执行安装程序验证所需的初始设置失败. 解决方法 第一步:控制面板>所有控制面板项>管理工具>服务>SERVER 启动 TCP/I ...