收藏整理的一些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中函数的用法实例教程
Sep 08 Python
Python中subprocess模块用法实例详解
May 20 Python
Python中的列表生成式与生成器学习教程
Mar 13 Python
python生成随机图形验证码详解
Nov 08 Python
Python实现学校管理系统
Jan 11 Python
python 返回列表中某个值的索引方法
Nov 07 Python
Python hexstring-list-str之间的转换方法
Jun 12 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
Python Django获取URL中的数据详解
Nov 01 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 JS Ip地址及域名格式检测代码
2013/09/27 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
2018/11/06 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
Python 的 with 语句详解
2014/06/13 Python
Django实现图片文字同时提交的方法
2015/05/26 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
Python文本相似性计算之编辑距离详解
2016/11/28 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
银河香水:Galaxy Perfume
2019/03/25 全球购物
董事长秘书职责
2014/01/31 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
MySQL 数据 data 基本操作
2022/05/04 MySQL