收藏整理的一些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中的异常处理学习笔记
Jan 28 Python
python使用calendar输出指定年份全年日历的方法
Apr 04 Python
python解析基于xml格式的日志文件
Feb 25 Python
python简单实现操作Mysql数据库
Jan 29 Python
Python + selenium自动化环境搭建的完整步骤
May 19 Python
python 常用的基础函数
Jul 10 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
Jul 12 Python
python爬虫实现中英翻译词典
Jun 25 Python
Python常用模块os.path之文件及路径操作方法
Dec 03 Python
flask实现验证码并验证功能
Dec 05 Python
python global和nonlocal用法解析
Feb 03 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 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
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
php生成zip文件类实例
2015/04/07 PHP
php单一接口的实现方法
2015/06/20 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
Jquery ajax基础教程
2015/11/20 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
面试常见的js算法题
2017/03/23 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
在Python中处理XML的教程
2015/04/29 Python
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
长辈证婚人证婚词
2014/01/09 职场文书
培训督导岗位职责
2015/04/10 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
详解Python牛顿插值法
2021/05/11 Python