收藏整理的一些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异常对代码运行性能的影响实例解析
Feb 08 Python
python解决字符串倒序输出的问题
Jun 25 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
利用Python的sympy包求解一元三次方程示例
Nov 22 Python
python利用opencv实现SIFT特征提取与匹配
Mar 05 Python
python+Selenium自动化测试——输入,点击操作
Mar 06 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
python进行参数传递的方法
May 12 Python
Python替换NumPy数组中大于某个值的所有元素实例
Jun 08 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
Python在线和离线安装第三方库的方法
Oct 31 Python
python 实现全球IP归属地查询工具
Dec 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
星际争霸任务指南——人族
2020/03/04 星际争霸
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
wxPython中文教程入门实例
2014/06/09 Python
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
Python @property使用方法解析
2019/09/17 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
简单说下OSPF的操作过程
2014/08/13 面试题
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
成教毕业生自我鉴定
2013/10/23 职场文书
社区工作者思想汇报
2014/01/13 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
培训协议书范本
2014/04/22 职场文书
课程设计感想范文
2015/08/11 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书