python進階訓練

一、列表,字典,集合解析python

from random import randint
#列表解析,選出大於0的元素
data=[randint(-10,10)for i in range(10)]
result1=filter(lambda  x:x>=0 ,data)
result2=[x for x in data if x>=0]#最快
for x in data:#最慢
    if x>=0:
        print(x)
#字典解析,value大於80
d = {x:randint(60,100) for x in (1,20)}#構造字典
result3={k:v for k,v in d.items() if v>80}
print(result3)
#集合解析
#集合中科院被3整除的元素
s=set(data) 
result4={x for x in s if x%3 ==0}

  二、爲元組命名dom

#可命名元組
from collections import namedtuple
#第一種方式
student = ('BOB',16,'male','810833355@qq.com')
name,age,sex,email = range(4)
print(student[name])

  

from collections import namedtuple
#第一種方式
# student = ('BOB',16,'male','810833355@qq.com')
# name,age,sex,email = range(4)
# print(student[name])

student= namedtuple('student',['name','age','sex','email'])
s=student('jim',16,'male','810823255@qq.com')
print(s,'==========',s.name)

  執行結果如圖3d

三、統計序列中元素出現頻度blog

from random import randint
data = [randint(1,20) for x in range(50)]#隨機序列,計算每一個元素出現的次數
c=dict.fromkeys(data,0)#0是初始值,將;將列表中的元素做爲字典的key
for x in data:
    c[x] +=1

  

from random import randint
data = [randint(1,20) for x in range(50)]#隨機序列,計算每一個元素出現的次數
from collections import Counter


c2  = Counter(data)
c2.most_common(3)#哪三個元素出現最多
print(c2,c2.most_common(3))

  結果如圖排序

詞頻統計ip

import re
from collections import Counter
txt = open('a.txt').read()
c1=re.split('\w',txt)#對非字母進行分割,而後傳進Counter
result = Counter(c1)#將列表傳進去
res = result.most_common(3)#出現次數最多的三個單詞

  四、根據字典中值的大小,對字典中的項進行排序內存

from random import randint

d1={x: randint(60,100) for x in 'abcxyz'}#六我的分別叫abcxyz
#1
print(sorted(zip(d1.values(),d1.keys())))#元組組成的列表,比較元組的第一個元素

#2
print(sorted(d1.items(),key=lambda x :x[1]))

  結果如圖字符串

 

五、如何快速找到多個字典裏面的公共鍵it

from random import randint,sample
#sample是取樣
#1
sam=sample('abcdef',randint(3,6))#隨機選取'abcdef'三到6個樣本
s1 ={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
s2={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
s3={x:randint(1,4) for x in sample('abcdef',randint(3,6))}
print(s1,s2,s3)


for k in s1:
    if k in s2 and k in s3:
        print(k)

  結果如圖io

第二種方法

print(s1.keys() & s2.keys() & s3.keys())#python2是viewkeys,這裏取交集
from functools import reduce

print(reduce(lambda a,b:a & b,map(dict.keys,[s1,s2,s3])))#若是鍵多能夠這樣,python2是viewkeys

  6,、如何讓字典有序

from collections import  OrderedDict

d= OrderedDict()

d['jib']=(1,35)
d['bob']=(2,5)
d['bbc']=(3,5)
for i in d:
    print(i)

  結果如圖

七、拆分含有多個分隔符的字符串

s='ab;cd|efgh|hi,jkl|topq;rst,vww\atex'
t=[]
res = s.split(';')
map(lambda x: t.extend(x.split('|')),res)
print(t)

  第二種方法

import re
s='ab;cd|efgh|hi,jkl|topq;rst,vww\atex'


print(re.split(r'[,;\|]',s))

  結果如圖

八、判斷字符串開頭

 

 

九、正則調整文本格式

import re
#1
l=['2016-05-23','2016-06-11','2016-07-12']
l1='2016-05-23'


print(re.sub('(\d{4})-(\d{2})-(\d{2})',r'\2/\3/\1',l1))

  結果如圖

第二種方法

import re
#1
l=['2016-05-23','2016-06-11','2016-07-12']
l1='2016-05-23'


print(re.sub('(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})',r'\g<month>/\g<day>/\g<year>',l1))

  十、字符串拼接

第一種方法

不過這種方法浪費內存,下面是第二種方法,用join

十一、調節字符串居中,左右對齊

s= 'abc'

print(s.ljust(20))
print(s.ljust(20,'+'))
print(s.center(20,'+'))

  結果如圖

ling另一種方法如圖

十二、去掉不須要的字符串

 去除空格

 

 去除指定字符

s= 'abc__++++'

print(s.strip('_+'))

s1 = 'abc:1224'
print(s1[:3]+s1[4:])

  結果如圖

s= '\tadhi\sfds\sdfds\sdfds\gf\gs\ggg'
print(re.sub('[\t\g\f\d]','',s))
相關文章
相關標籤/搜索