值得玩味儿的14个Python编程小技巧

全文共394个字,1张图,预计阅读时间5分钟。


640?wx_fmt=other


最近的工作中经常使用Python编写一些基本解决一些NLP的小问题,在自己的工作日记里面也记录了不少的python编程中常用的小"Trick",看到最近大家学习Python的劲头儿这么火辣,那就简单的贴出一些。该篇文章定位是"Just show me code"风格----即:少废话,直接Sublime里面写Python!


主要包含的内容:几种常用数据类型list--->str---->dict--->set的基本转换、常用的操作、文本预处理过程中的字符串的处理以及利用正则剔除正文中的URL信息等,都是自己写代码时比较高频的点儿!


懒得编辑格式了...有需求的人,随便看看就当学习啦!


  1# coding:utf-8
 2# 1.实现浮点除法
 3from __future__ import division
 4# 2.解决处理文本数据格式报错
 5import sys
 6reload(sys)
 7sys.setdefaultencoding("utf-8")
 8from collections import OrderedDict
 9from collections import Counter
10# 3.python中集中数据类型的转换:str--->list-->str--->list--->dict
11a="12345"
12a=list(a)
13print "-".join(list(a))
14# 逆转列表
15a1=a[::-1]
16print a1
17# ['5', '4', '3', '2', '1']
18print zip(a,a1)
19# [('1', '5'), ('2', '4'), ('3', '3'), ('4', '2'), ('5', '1')]
20# list--->string
21aa=",".join(["#".join(i) for i in zip(a,a1)])
22print aa
23#1#5,2#4,3#3,4#2,5#1
24
25# 4.带索引的访问list的元素
26for index,value in enumerate(a):
27print index,value
28# list--->dict,列表的推导式访问+条件判断+类型转换
29a_index={v:i for i,v in enumerate(a) if int(v)%2==0}
30print a_index
31# {'2': 1, '4': 3}
32teams = ["Packers""49ers""Ravens""Patriots"]
33print {key: value for value, key in enumerate(teams)}
34# {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0}
35
36#5.单个变量str—>unicode编码:u'%s' %(a)
37
38# collections是Python内建的一个集合模块,提供了许多有用的集合类。
39# 6.实现list的去重
40name=["kobe","tom","james","du ke","kobe","tom"]
41# 使用set当时去重会改变原始的顺序
42print list(set(name))
43# ['kobe', 'duke', 'james', 'tom']
44
45# 推荐使用OrderedDict这种方式来保留原始list中的次序[在排序中有用],在遍历的时候,他是保持了key插入字典的顺序
46print list(OrderedDict.fromkeys(name).keys())
47# ['kobe', 'tom', 'james', 'duke']
48
49# 7.统计词频,并返回Top K。[当需要处理的字典长度是固定的时候,也可以用于字典的排序]
50sort_all=Counter(name).most_common(5)
51print sort_all
52# [('kobe', 2), ('tom', 2), ('duke', 1), ('james', 1)]
53
54#8.使用defaultdict替换系统默认的创建字典,可以不需要我们在程序中,按key访问的时候,先手动的判断该key是否在字典中
55from collections import defaultdict
56# 定义,当访问一个key不存的时候的默认值
57dd = defaultdict(lambda'None')
58for i in name:
59if i not in dd:
60dd[i] = 1
61print dd["tom"]
62print dd["Tomes"]
63# 也可以使用默认的字典构建方式,然后再访问时候使用get的方式
64
65# 9.借助deque在list中实现双向的插入、删除:
66from collections import deque
67q = deque(['a''b''c'])
68# 尾部插入
69q.append('x')
70# 头部插入
71q.appendleft('y')
72print q
73# 当然,也可以借助默认的list
74q=['a''b''c']
75q.insert(0,'y')
76# 删除指定位置的元素
77a=q.pop(1)
78print q
79print a
80
81#10.返回数组中的最大最小值
82num=[12,1,200,4,43,21]
83
84def getIndex(l,flag="max"):
85if flag.strip()=="max":
86return max(range(len(l)),key=l.__getitem__)
87elif flag.strip()=="min":
88return min(range(len(l)),key=l.__getitem__)
89else:
90return "Flag Error"
91
92print getIndex(num)
93print getIndex(num,flag="min8")
94
95# 11.对列表中的各个元素进行类别转换
96num=map(str,num)
97print num
98num=map(float,num)
99print num
100# map结合lambda表达式还可以完成很多操作
101m=[1,2,3,4]
102print map(lambda x:x+1,m)
103
104# 12.字典格式的字符串---->字典[推荐使用ast的方式,而不是json(存在引号问题)/eval的方式(存在安全漏洞)]
105import ast
106user = '{"name" : "john", "gender" : "male", "age": 28}'
107print ast.literal_eval(user)["name"]
108
109# 13.对字典排序
110d = {'a'2'A'113'b'2}
111# 对你字典安装value进行排序,然后返回一个元组的集合
112import operator
113s = sorted(d.iteritems(), key=operator.itemgetter(1), reverse=True)
114print s
115# [(1, 3), ('a', 2), ('b', 2), ('A', 1)]
116
117#14.字符串的过滤。[文本的与处理中常用]
118"""(1)判断一个unicode是否只包含英文字母"""
119def is_alphabet(uchar):
120if (uchar >= u'\u0041' and uchar<=u'\u005a'or (uchar >= u'\u0061' and uchar<=u'\u007a'):
121return True
122else:
123return False
124
125# (2)借助re,只保留字符串中的中英文数字
126import re
127s="我是中国人(Chinese)!666^_^!!"
128s=re.findall(u"[a-z]|[A-Z]|[\u4e00-\u9fa5]|[\\d]+",u'%s' %(s))
129s= "".join(s).strip().replace(" ","")
130print s
131# 我是中国人Chinese666
132
133# (3)去除文本中的URL
134def remove_urls (vTEXT):
135vTEXT = re.sub(r'(https|http|httpt)?:\/\/(\w|\.|\/|\?|\=|\&|\%)*\b'' ', vTEXT, flags=re.MULTILINE)
136return(vTEXT)



真爽...这样写博客的速度就大大提高了....程序猿嘛,能上代码,就少絮叨啦!!!大家自己使用的过程中,有啥好的Python编程小技巧,欢迎交流啊!


原文链接:https://www.jianshu.com/p/3b3a6743cab7


查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

www.leadai.org


请关注人工智能LeadAI公众号,查看更多专业文章

640?wx_fmt=jpeg

大家都在看

640.png?

LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础

第一回   这里因说到宝玉,不得不说他生来便是个贪吃的人。自幼便跟贾母说道:“我不娶媳妇,只娶个山东煎饼儿来,天天吃就好了。”贾母和王夫人听了,都笑了。从此便替他起了个绰号叫作“煎饼儿”。他自己也爱笑,别人问他:“怎么称呼你?”他便说道:“叫我煎饼儿就成了。”他又说道:“我天生爱吃的,别人吃得出味儿来,我就吃不出来,我若吃不饱,便头昏眼花,走路跌跌撞撞的,就像个醉汉一般。这也是我体质的缘故。”   贾母听了,便替他叫了一个十五岁的小厨子来,专管他的饮食起居。那小厨子自幼也是个贪吃的,又听了这话,心里也替他高兴,便起了个外号叫作“豆子儿”,他自己也答应了。从此两个人便结伴儿同吃同喝,同睡同,还同穿一色的衣裳。这豆子儿虽小,却也是个心灵手巧的人,善于琢磨味道,宝玉见他做得好,便甚喜爱他,经常夸他。豆子儿见他爱吃,便只顾着做,别的事情都不理。这样,宝玉的饮食起居便全靠他一个人料理了。   自此以后,宝玉每日吃喝乐,无不得意。他的性格本来就是个软弱的,又富贵出身,家里人又宠他,教师又宠他,所以一旦受了些委屈,便在心里生出怨气来。他自己也不知道怨的是谁,只是整日里心里不痛快,满肚子的委屈。幸而他有个好朋友林黛玉,才得以消解心中不快。林黛玉也是个性情中人,见他不是开心,便入他房里来,陪他说笑。他们两个人在一起,总是欢欢喜喜的。自幼受了家里人的宠爱,又有这样一个好朋友,宝玉的性格就这样形成了。   说起来,宝玉的父亲原是个生意人,家里本不富裕。他年轻时,曾经在扬州做生意,得了一个小姑娘,就是宝玉的母亲。那个小姑娘本是个倒霉蛋,嫁到宝玉的家里,便被王夫人嫌弃,使她受尽了委屈。不久后,她便生下了一个儿子,就是宝玉。由于她是个弱质女子,没有多久便病死了。宝玉的父亲也不幸去世,留下家业无人继承。宝玉的祖父是个忠良之士,早已去世,留下了一些家产,他的母亲也是个贤淑的女子,生前曾教导宝玉一些道理。宝玉自幼聪明伶俐,又受了母亲的教导,便比同龄的孩子都要懂得多些。他对自己的母亲非常怀念,常常在心里默默地祈祷她。他的母亲曾带着他去拜访他的祖父,祖父在世时,对他也非常疼爱。现在祖父已经去世了,他便感到非常孤独。他很羡慕那些有父亲有母亲的孩子,也很羡慕那些有兄弟姐妹的孩子。他自己一个人在家,便常常感到寂寞。他的奶妈王夫人,虽然对他很好,他也很爱她,可是他总觉得她不是他的亲人。他常常想起他的母亲,想起他的祖父,心里就感到非常难过。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值