收藏整理的一些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 15 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
python在非root权限下的安装方法
Jan 23 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
Feb 02 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
May 24 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
基于python使用tibco ems代码实例
Dec 20 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
Jun 22 Python
python中pivot()函数基础知识点
Jan 03 Python
python实现会员信息管理系统(List)
Mar 18 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
Protoss热键控制
2020/03/14 星际争霸
域名查询代码公布
2006/10/09 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
Python Flask基础教程示例代码
2018/02/07 Python
代码分析Python地图坐标转换
2018/02/08 Python
python实现随机漫步算法
2018/08/27 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
Java程序员面试90题
2013/10/19 面试题
校园歌手大赛策划书
2014/01/17 职场文书
说明书范文
2014/05/07 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
2015年度企业工作总结
2015/05/21 职场文书
担保书怎么写 ?
2019/04/22 职场文书
Django使用echarts进行可视化展示的实践
2021/06/10 Python
详解 TypeScript 枚举类型
2021/11/02 Javascript