收藏整理的一些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实现的登陆Discuz!论坛通用代码分享
Jul 11 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
python实现m3u8格式转换为mp4视频格式
Feb 28 Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 Python
python3第三方爬虫库BeautifulSoup4安装教程
Jun 19 Python
python 异或加密字符串的实例
Oct 14 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
Python 串口读写的实现方法
Jun 12 Python
用python写测试数据文件过程解析
Sep 25 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 Python
Django实现前台上传并显示图片功能
May 29 Python
Keras官方中文文档:性能评估Metrices详解
Jun 15 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
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
一个PHP模板,主要想体现一下思路
2006/12/25 PHP
php 图像函数大举例(非原创)
2009/06/20 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
Firefox outerHTML实现代码
2009/06/04 Javascript
javascript 显示当前系统时间代码
2009/12/28 Javascript
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
JSON相关知识汇总
2015/07/03 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
vue-cli配置环境变量的方法
2018/07/09 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
python进阶教程之循环对象
2014/08/30 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
python实现可逆简单的加密算法
2019/03/22 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
phpquery中文手册
2021/03/18 PHP
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
2014教师评职称工作总结
2014/11/10 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技