python十四类实用技巧_值得玩味儿的14个Python编程小技巧

# coding:utf-8

# 1.实现浮点除法

from __future__ import division

# 2.解决处理文本数据格式报错

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

from collections import OrderedDict

from collections import Counter

# 3.python中集中数据类型的转换:str--->list-->str--->list--->dict

a="12345"

a=list(a)

print "-".join(list(a))

# 逆转列表

a1=a[::-1]

print a1

# ['5', '4', '3', '2', '1']

print zip(a,a1)

# [('1', '5'), ('2', '4'), ('3', '3'), ('4', '2'), ('5', '1')]

# list--->string

aa=",".join(["#".join(i) for i in zip(a,a1)])

print aa

#1#5,2#4,3#3,4#2,5#1

# 4.带索引的访问list的元素

for index,value in enumerate(a):

print index,value

# list--->dict,列表的推导式访问+条件判断+类型转换

a_index={v:i for i,v in enumerate(a) if int(v)%2==0}

print a_index

# {'2': 1, '4': 3}

teams = ["Packers", "49ers", "Ravens", "Patriots"]

print {key: value for value, key in enumerate(teams)}

# {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0}

#5.单个变量str—>unicode编码:u'%s' %(a)

# collections是Python内建的一个集合模块,提供了许多有用的集合类。

# 6.实现list的去重

name=["kobe","tom","james","duke","kobe","tom"]

# 使用set当时去重会改变原始的顺序

print list(set(name))

# ['kobe', 'duke', 'james', 'tom']

# 推荐使用OrderedDict这种方式来保留原始list中的次序[在排序中有用],在遍历的时候,他是保持了key插入字典的顺序

print list(OrderedDict.fromkeys(name).keys())

# ['kobe', 'tom', 'james', 'duke']

# 7.统计词频,并返回Top K。[当需要处理的字典长度是固定的时候,也可以用于字典的排序]

sort_all=Counter(name).most_common(5)

print sort_all

# [('kobe', 2), ('tom', 2), ('duke', 1), ('james', 1)]

#8.使用defaultdict替换系统默认的创建字典,可以不需要我们在程序中,按key访问的时候,先手动的判断该key是否在字典中

from collections import defaultdict

# 定义,当访问一个key不存的时候的默认值

dd = defaultdict(lambda: 'None')

for i in name:

if i not in dd:

dd[i] = 1

print dd["tom"]

print dd["Tomes"]

# 也可以使用默认的字典构建方式,然后再访问时候使用get的方式

# 9.借助deque在list中实现双向的插入、删除:

from collections import deque

q = deque(['a', 'b', 'c'])

# 尾部插入

q.append('x')

# 头部插入

q.appendleft('y')

print q

# 当然,也可以借助默认的list

q=['a', 'b', 'c']

q.insert(0,'y')

# 删除指定位置的元素

a=q.pop(1)

print q

print a

#10.返回数组中的最大最小值

num=[12,1,200,4,43,21]

def getIndex(l,flag="max"):

if flag.strip()=="max":

return max(range(len(l)),key=l.__getitem__)

elif flag.strip()=="min":

return min(range(len(l)),key=l.__getitem__)

else:

return "Flag Error"

print getIndex(num)

print getIndex(num,flag="min8")

# 11.对列表中的各个元素进行类别转换

num=map(str,num)

print num

num=map(float,num)

print num

# map结合lambda表达式还可以完成很多操作

m=[1,2,3,4]

print map(lambda x:x+1,m)

# 12.字典格式的字符串---->字典[推荐使用ast的方式,而不是json(存在引号问题)/eval的方式(存在安全漏洞)]

import ast

user = '{"name" : "john", "gender" : "male", "age": 28}'

print ast.literal_eval(user)["name"]

# 13.对字典排序

d = {'a': 2, 'A': 1, 1: 3, 'b': 2}

# 对你字典安装value进行排序,然后返回一个元组的集合

import operator

s = sorted(d.iteritems(), key=operator.itemgetter(1), reverse=True)

print s

# [(1, 3), ('a', 2), ('b', 2), ('A', 1)]

#14.字符串的过滤。[文本的与处理中常用]

"""(1)判断一个unicode是否只包含英文字母"""

def is_alphabet(uchar):

if (uchar >= u'\u0041' and uchar<=u'\u005a') or (uchar >= u'\u0061' and uchar<=u'\u007a'):

return True

else:

return False

# (2)借助re,只保留字符串中的中英文数字

import re

s="我是中国人(Chinese)!666^_^!!"

s=re.findall(u"[a-z]|[A-Z]|[\u4e00-\u9fa5]|[\\d]+",u'%s' %(s))

s= "".join(s).strip().replace(" ","")

print s

# 我是中国人Chinese666

# (3)去除文本中的URL

def remove_urls (vTEXT):

vTEXT = re.sub(r'(https|http|httpt)?:\/\/(\w|\.|\/|\?|\=|\&|\%)*\b', ' ', vTEXT, flags=re.MULTILINE)

return(vTEXT)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值