收藏整理的一些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实现的检测web服务器健康状况的小程序
Sep 17 Python
python利用beautifulSoup实现爬虫
Sep 29 Python
Python实现的使用telnet登陆聊天室实例
Jun 17 Python
python中pika模块问题的深入探究
Oct 13 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
Python进度条的制作代码实例
Aug 31 Python
python模块常用用法实例详解
Oct 17 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
详解anaconda离线安装pytorchGPU版
Sep 08 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 文件状态缓存带来的问题
2008/12/14 PHP
PHP 飞信好友免费短信API接口开源版
2010/07/22 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
php中如何执行linux命令详解
2018/11/06 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
PHP反射实际应用示例
2019/04/03 PHP
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
JQuery基础语法小结
2015/02/27 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
python数据结构之二叉树的建立实例
2014/04/29 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
详解python中的文件与目录操作
2017/07/11 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
python实现图片转字符画
2021/02/19 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
小学生暑假感言
2014/02/06 职场文书
本科生就业推荐信
2014/05/19 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
2016公司年会主持词
2015/07/01 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server