python

Python高效编程的技巧

2019-06-28  本文已影响2人  有用教育

工作中经常要处理各种各样的数据,遇到项目赶进度的时候自己写函数容易浪费时间。

Python 中有很多内置函数帮你提高工作效率!

一:根据条件在序列中筛选数据

1.假设有一个数字列表 data, 过滤列表中的负数

使用列表推导式:

result = [iforiindataifi >=0]

于 80 分的同学

d = {x:randint(50,100)forxinrange(1,21)}

{k: vfork, vind.items()ifv >80}

二:对字典的键值对进行翻转

使用 zip() 函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

>>> s1 = {x: randint(1,4)forxinsample('abfcdrg', randint(1,5))}

>>> s1

{'b':1,'f':4,'g':3,'r':1}

>>> d = {k:vfork, vinzip(s1.values(), s1.keys())}

>>> d

{1:'r',4:'f',3:'g'}

三. 统计序列中元素出现的频度

1.某随机序列中,找到出现次数最高的3个元素,它们出现的次数是多少?

构造随机序列如下:

data = [randint(0,20)for_inrange(20)]

方法1: 可以使用字典来统计,以列表中的数据为键,以出现的次数为值

fromrandomimportrandint

defdemo():

data = [randint(0,20)for_inrange(30)]

# 列表中出现数字出现的次数

d = dict.fromkeys(data,0)

forvinli:

d[v] +=1

returnd

方法2:直接使用 collections 模块下面的 Counter 对象

>>> data = [randint(0,20)for_inrange(30)]

>>> data

[7,8,5,16,10,16,8,17,11,18,11,17,15,7,2,19,5,16,17,17,12,19,9,10,0,20,11,2,11,10]

>>> c2 = Counter(data)

>>> c2

Counter({17:4,11:4,16:3,10:3,7:2,8:2,5:2,2:2,19:2,18:1,15:1,12:1,9:1,0:1,20:1})

>>> c2[14]

4

>>> c2.most_common(3)# 统计频度出现最高的3个数

[(17,4), (11,4), (16,3)]

2. 对某英文文章单词进行统计,找到出现次数最高的单词以及出现的次数

通过上面的练习,我们知道可以用 Counter 来解决

importre

fromcollectionsimportCounter

# 统计某个文章中英文单词的词频

withopen('test.txt','r', encoding='utf-8')asf:

d = f.read()

total = re.split('W+', d)# 所有的单词列表

result = Counter(total)

print(result.most_common(10))

上一篇下一篇

猜你喜欢

热点阅读