博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python高效编程(一)
阅读量:6623 次
发布时间:2019-06-25

本文共 2746 字,大约阅读时间需要 9 分钟。

实际编程和面试都会遇到的典型问题。

如何在列表,字典,集合中根据条件筛选数据

from random import randintfrom timeit import timeit​data = [randint(-10,10) for _ in range(10)] filter(lambda x:x >= 0,data)#首选列表解析 时间比filter少一半左右[x for x in data if x >= 0]​data = {x:randint(60,100) for x in range(1,21)}{k:v for k,v in data.items() if v > 90}​data = set(data){x for x in data if x%3==0}复制代码

如何为元组中每个元素命名,提高程序的可读性

#第一种# NAME = 0# AGE = 1# SEX = 2# EMAIL = 3NAME,AGE,SEX,EMAIL = range(4)student = ('Jan',14,'male','jan@jan.net')#nameprint(student[NAME])#第二种from collections import namedtupleStudent = namedtuple('Student',['name','age','sex','email'])student= Student('Jan',14,'male','jan@jan.net')#nameprint(student[NAME])student.ageisinstance(student,tuple)复制代码

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

from random import randintdata = [randint(1,10) for x in range(20)]c = dict.fromkeys(data,0)#第一种for x in data:    c[x]+=1    #第二种from collections import Counterc2 = Counter(data)#出现频度最高的三个c2.most_common(3)#统计一篇文章中单词出现次数import re#导入Python之禅import thisc3 = Counter(re.split('\W+',this.s))复制代码

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

from random import randintdata = {x:randint(60,100) for x in 'abcdefg'}#sorted(data.values())#第一种t = zip(data.values(),data.keys())sorted(t)#第二种sorted(data.items(),key=lambda x: x[1])复制代码

如何快速找到多个字典中的公共键(key)

from random import randint,samples1 = {x: randint(1,4) for x in sample('abcdefgh',randint(3,6))}s2 = {x: randint(1,4) for x in sample('abcdefgh',randint(3,6))}s3 = {x: randint(1,4) for x in sample('abcdefgh',randint(3,6))}#第一种res = []for k in s1:    if k in s2 and k in s3:        res.append(k)        #第二种from functools import reduces1.keys()&s2.keys()&s3.keys()map(dict.keys,[s1,s2,s3])reduce(lambda a, b:a & b,map(dict.keys,[s1,s2,s3]))复制代码

如何让字典保持有序

d = {}d['Tom'] = (1,30)d['Linda'] = (1,40)d['Jack'] = (1,50)from collections import OrderedDictd = OrderedDict()d['Tom'] = (1,30)d['Linda'] = (1,40)d['Jack'] = (1,50)d.keys()from time import timefrom random import randintsorce = OrderedDict()players = list('abcdefgh')start = time()for i in range(8):    input()    p = players.pop(randint(0, 7 - i))    end = time()    print(i+1,p,end - start)    sorce[p] = (i+1,end - start)print('-'*20)for k in sorce:    print(k,sorce[k])复制代码

如何实现用户的历史记录功能(最多n条)

from collections import dequefrom random import randintN = randint(0,100)# 一个容纳5个值的队列history = deque([],5)def guess(k):    if k == N:        print('right!')        return True    if k < N:        print('%s is less than N'%k)    else:        print('%s is greater than N'%k)    return Falsewhile True:    input_number = input('please input a number: ')    if input_number.isdigit():        k = int(input_number)        history.append(k)        if guess(k):            break    elif input_number == 'history':        print(list(history))复制代码

转载地址:http://dtjpo.baihongyu.com/

你可能感兴趣的文章
Android系统自带样式(android:theme)解析
查看>>
全志A33开发板Linux内核定时器编程
查看>>
全栈必备 敏捷估点
查看>>
一个爬虫小技巧
查看>>
作为一名合格的JAVA架构师需要点亮哪些技能树?
查看>>
为什么短视频会让人刷不停?背后也许用了这套技术
查看>>
Kubernetes 在知乎上的应用
查看>>
读C#开发实战1200例子记录-2017年8月14日11:20:38获取汉字编码值
查看>>
Fescar 发布 0.3.1 版本, 支持 ZooKeeper 注册中心
查看>>
网站优化中四个常见的优化难题及解决方法!
查看>>
【死磕 Spring】----- IOC 之解析 bean 标签:BeanDefinition
查看>>
Java部署环境搭建(Linux)
查看>>
使用 will-change 来提升浏览器渲染效果
查看>>
Animation总结(差值器和估值器)
查看>>
Java数据结构与算法(十)-图
查看>>
4.1 在SELinux中客体类存在的目的
查看>>
如何用iPad运行Python代码?
查看>>
PHP学习3——数组
查看>>
E-HPC支持多队列管理和自动伸缩
查看>>
Maven的插件:命令行执行
查看>>