Python高效编程1

1:根据条件筛选数据

列表:fileter函数或列表解析

filter(lambda x:x>=0,data)

[x for x in data if x>=0]

字典:字典解析

{k:v for k,v in d.iteritems() if v>90}

集合:{x for x in s if x%3==0}

2:为元组的每个元素命名

from collections import namedtuple

namedtuple('Student',['name','age','sex','email'])

s=Student('Jim',16,'male','jim8721@gmail.com')

isinstance(s,tuple) Ture

3:如何统计出序列中元素出现频度

data=[randint(0,20) for _ in range(30)]

c=dict.fromkeys(data,0)

for x in data:
    c[x]+=1

再排序。

或者

from collections import Counter
c2=Counter(data)  #c2是个字典
c2.most_common(3)   #出现频度最高的三个

4:如何根据字典值的大小,对字典中的项排序

sorted,如 sorted([,9,8,5,6,7])

d={x:randint(60,100) for x in 'xyz'}
sorted(d)#直接对字典进行排序是按键进行排序的,而不是按值

方法1:
zip(d.values(),d.keys()) #值放前面的元组列表
zip(d.itervalues(),d.iterkeys()) #值放前面的元组列表

sorted(zip(d.itervalues(),d.iterkeys())) #成功按成绩排名

方法2:sorted的key
sorted(d.items(),key=lamda x:x[1])

5: 如何快速找到多个字典中的公告键

from random import randint,sample
sample('abcdefg',3)
sample('abcdefg',randint(3,6))
s1={x: randint(1,4) for x in sample('abcdefg',randint(3,6))}
s2={x: randint(1,4) for x in sample('abcdefg',randint(3,6))}
s3={x: randint(1,4) for x in sample('abcdefg',randint(3,6))}

使用集合(set)的交集操作

方法一
s1.viewkeys()&s2.viewkeys()$s3.viewkeys()

方法二
map(dict.viewkeys,[s1,s2,s3])
reduce(lambda a,b: a^b,map(dict.viewkeys,[s1,s2,s3]))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值