收藏整理的一些Python常用方法和技巧


Posted in Python onMay 18, 2015

1. 逆转字符串的三种方法
1.1. 模拟C++中方法, 定义一个空字符串来实现
通过设置一个空字符串, 然后讲参数中的字符串从后往前遍历, 使用字符串的加法合并为新的字符串

def reverse(text) :

    str = ''

    index = len(text) - 1

    while index >= 0 :

        str += text[index]

        index -= 1

    return str

1.2. 使用切片法
这个是Python中的一个特性, 切片可以取负值,这是采用切片的方法,设置步长为-1,这样就实现了反过来排序。
def reverse_1(text) :

    return text[::-1]

1.3. 使用列表

采用列表的reverse方法,先将text转换为列表,然后通过reverse方法反转,然后在通过join连接为字符串。

def reverse_2(text) :

    temp = list(text)

    temp.reverse()

    return ''.join(temp)

2. 使用reduce
使用匿名函数和reduce()
def reverse_3(text) :

    return reduce(lambda x, y : y + x, text)

print reverse_3("Hello")

3. 遍历字典的四种方法

dict={"a":"apple","b":"banana","o":"orange"} 

 

print "##########dict######################" 

for i in dict: 

        print "dict[%s]=" % i,dict[i] 

 

print "###########items#####################" 

for (k,v) in  dict.items(): 

        print "dict[%s]=" % k,v 

 

print "###########iteritems#################" 

for k,v in dict.iteritems(): 

        print "dict[%s]=" % k,v 

 

print "###########iterkeys,itervalues#######" 

for k,v in zip(dict.iterkeys(),dict.itervalues()): 

        print "dict[%s]=" % k,v

4. 遍历list的三种方法
for key in lst :

    print key

    

for i in range(len(lst)) :

    print lst[i]

for index, key in enumerate(lst) :

    print key    //index是list的索引

5. 字典排序的方法
字典按照value的值从大到小的顺序来排序(默认从小到排序)。
dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}

dict= sorted(dic.iteritems(), key=lambda d:d[1], reverse = True)

print dict

//输出的结果:

[('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)]

下面我们分解下代码
print dic.iteritems() 得到[(键,值)]的列表。
然后用sorted方法,通过key这个参数,指定排序是按照value,也就是第一个元素d[1的值来排序。reverse = True表示是需要翻转的,默认是从小到大,翻转的话,那就是从大到小。
对字典按键(key)排序:

dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}

dict= sorted(dic.iteritems(), key=lambda d:d[0]) # d[0]表示字典的键

print dict

#sorted中第三个可选参数为reverse, True表示从大到小排序

#默认reverse = False

6. 子类和父类
子类构造函数调用父类的初始化构造函数

class A(object) :

    def __init__(self) :

        print  "testA

class B(A) :

    def __init__(self) :

        A.__init__(self)

子类调用父类的同名函数
super().fuleifunction()

7. 更灵活的参数传递方式
func2(a=1, b=2, c=3) #默认参数

func3(*args)         #接受任意数量的参数, 以tuple的方式传入

func4(**kargs)       #把参数以键值对字典的形式传入

在变量前加上星号前缀(*),调用时的参数会存储在一个 tuple()对象中,赋值给形参。在函数内部,需要对参数进行处理时,只要对这个 tuple 类型的形参(这里是 args)进行操作就可以了。因此,函数在定义时并不需要指明参数个数,就可以处理任意参数个数的情况。

def calcSum(*args):

    sum = 0

    for i in args:

        sum += i

        print sum

#调用:

calcSum(1,2,3)

calcSum(123,456)

calcSum()

#输出:

6

579

0

#################################

def printAll(**kargs):

    for k in kargs:

    print k, ':', kargs[k]

printAll(a=1, b=2, c=3)

printAll(x=4, y=5)

#输出:

a : 1

c : 3

b : 2

y : 5

x : 4

python的中参数可以多种形式进行组合, 在混合使用时,首先要注意函数的写法,必须遵守:

1.带有默认值的形参(arg=)须在无默认值的形参(arg)之后
2.元组参数(*args)须在带有默认值的形参(arg=)之后
3.字典参数(**kargs)须在元组参数(*args)之后

在函数被调用时,参数的传递过程为:

1.按顺序把无指定参数的实参赋值给形参
2.把指定参数名称(arg=v)的实参赋值给对应的形参
3.将多余的无指定参数的实参打包成一个 tuple 传递给元组参数(*args)
4.将多余的指定参数名的实参打包成一个 dict 传递给字典参数(**kargs)

8. lambda 表达式
lambda 表达式可以看做一种匿名函数
    lambda 表达式的语法格式:
    lambda 参数列表: 表达式   #参数列表周围没有括号,返回值前没有 return 关键字,也没有函数名称

def fn(x):

    return lambda y: x + y

#调用

a = fn(2)

print a(3)

#输出

5

分析
: fn(2)调用后, 相当于a = lambda y: 2 + y, 然后a(3)被调用时.
相当于 print lambda y: 2 + 3

Python 相关文章推荐
python正则表达式re模块详解
Jun 25 Python
Python学习小技巧之列表项的拼接
May 20 Python
python编程线性回归代码示例
Dec 07 Python
python版学生管理系统
Jan 10 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
python3模块smtplib实现发送邮件功能
May 22 Python
Python 爬取携程所有机票的实例代码
Jun 11 Python
python搜索包的路径的实现方法
Jul 19 Python
使用Python实现 学生学籍管理系统
Nov 26 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
Numpy ndarray 多维数组对象的使用
Feb 10 Python
python绘图模块之利用turtle画图
Feb 12 Python
简介Python中用于处理字符串的center()方法
May 18 #Python
Python中Random和Math模块学习笔记
May 18 #Python
浅析Python中将单词首字母大写的capitalize()方法
May 18 #Python
Python NumPy库安装使用笔记
May 18 #Python
Python中转换角度为弧度的radians()方法
May 18 #Python
Python Matplotlib库入门指南
May 18 #Python
解读Python中degrees()方法的使用
May 18 #Python
You might like
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
python实现apahce网站日志分析示例
2014/04/02 Python
Python实时获取cmd的输出
2015/12/13 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
python构造函数init实例方法解析
2020/01/19 Python
linux 下selenium chrome使用详解
2020/04/02 Python
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
新奇的小玩意:IWOOT
2016/07/21 全球购物
好的自荐信包括什么内容
2013/11/07 职场文书
幼儿园课题方案
2014/06/09 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android