收藏整理的一些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的Django框架与认证系统整合的方法
Jul 24 Python
Python单链表简单实现代码
Apr 27 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
微信跳一跳辅助python代码实现
Jan 05 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
pandas删除指定行详解
Apr 04 Python
手写一个python迭代器过程详解
Aug 27 Python
tensorflow 限制显存大小的实现
Feb 03 Python
django template实现定义临时变量,自定义赋值、自增实例
Jul 12 Python
python-地图可视化组件folium的操作
Dec 14 Python
scrapy-splash简单使用详解
Feb 21 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 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
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
IE与FireFox中的childNodes区别
2011/10/20 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
python列表去重的二种方法
2014/02/14 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
python3中的md5加密实例
2018/05/29 Python
opencv与numpy的图像基本操作
2019/03/08 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Python列表推导式实现代码实例
2020/09/09 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
活动总结结尾怎么写
2014/08/30 职场文书
庆元旦主持词
2015/07/06 职场文书
nginx中封禁ip和允许内网ip访问的实现示例
2022/03/17 Servers
tree shaking对打包体积优化及作用
2022/07/07 Java/Android