收藏整理的一些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来使用七牛云存储的方法详解
Aug 07 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
python破解zip加密文件的方法
May 31 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
python3安装speech语音模块的方法
Dec 24 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
Jun 18 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
python实现H2O中的随机森林算法介绍及其项目实战
Aug 29 Python
Numpy数组的广播机制的实现
Nov 03 Python
PyCharm常用配置和常用插件(小结)
Feb 06 Python
使用python绘制横竖条形图
Apr 21 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
php5 and xml示例
2006/11/22 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
七个不允许错过的jQuery小技巧
2015/12/21 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
小程序实现列表点赞功能
2018/11/02 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
Python内置函数dir详解
2015/04/14 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
python 发送json数据操作实例分析
2019/10/15 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
pytorch标签转onehot形式实例
2020/01/02 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
2014年上半年工作自我评价
2014/01/18 职场文书
2014年店长工作总结
2014/11/17 职场文书
趵突泉导游词
2015/02/03 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
检讨书模板大全
2015/05/07 职场文书
死亡诗社观后感
2015/06/05 职场文书
初中数学教学反思范文
2016/02/17 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle