python3实用编程技巧_Python3实用编程技巧进阶一
01-字典列表集合中筛选
# 如何在列表字典集合中根据条件帅选数据fromrandom import randint
# 第一种
# data= [-1,2,3,-4,5]
# res=[]
#for x indata:
#if x > 0:
# res.append(x)
# print(res)
# a= randint(-10,10)
# print(a)
b= [randint(-10,10) for _ in range(10)]
# print(b)
# 第二种
# 列表解析
b2= [x for x in b if x >= 0]
# print(b2)
# 第三种filter函数
# 返回一个生成器对象 next可以取出元素
b3= filter(lambda x:x>=0,b)
# print(next(b3))
# print(list(b3))
# 第四种 字典
d= {'student%d' % i : randint(50,100) for i in range(1,21) }
# print(d)
# 获取分数高于90的学生
d1= {k:v for k,v in d.items() if v >=90}
# print(d1)
g= filter(lambda item:item[1],d.items())
# print(list(g))
g= filter(lambda item:item[1],d.items())
# print(dict(g))
# 第五种集合
s= {randint(0,20) for _ in range(20)}
print(s)
s1= {x for x in s if x %3 == 0}
print(s1)
View Code
02-枚举
# 举例from enumimport Enum, unique
# @unique
#classColor(Enum):
# red= 1# red_alias= 2#
# print(Color['red'])
# print(Color.red.name)
# print(Color.red.value)classColor(Enum):
red= 1orange= 2yellow= 3green= 4blue= 5indigo= 6purple= 7red_alias= 1
for color inColor:
print(color)for color inColor.__members__.items():
print(color)
print(Color['red'])
print(Color['red'].name)
print(Color['red'].value)for i inColor:
print(i.name,'->',i.value)
View Code
03-具名元组
04-根据字典值的大小对字典中的项排序
#将字典中的各项转换为元组 使用内置函数sorted排序
#包含元组的列表是可以排序的(元组是可以比较大小的)
# print((3,2) > (1,4))"""依次从前到后比较
返回 True"""
fromrandom import randint
#第一种方法
d= {k:randint(60,100) for k in 'abcdefg'}
# print(d)
l= [(v,k) for k ,v ind.items()]
# print(l)
l= sorted(l,reverse=True)
# print(l)"""True
{'a': 87, 'b': 89, 'c': 86, 'd': 60, 'e': 99, 'f': 77, 'g': 87}
[(87, 'a'), (89, 'b'), (86, 'c'), (60, 'd'), (99, 'e'), (77, 'f'), (87, 'g')]
[(99, 'e'), (89, 'b'), (87, 'g'), (87, 'a'), (86, 'c'), (77, 'f'), (60, 'd')]"""#第二种
d= {k:randint(60,100) for k in 'abcdefg'}
# print(d)
l=list(zip(d.values(),d.keys()))
# print(l)
l= sorted(l,reverse=True)
# print(l)"""True
{'a': 72, 'b': 92, 'c': 85, 'd': 65, 'e': 75, 'f': 69, 'g': 62}
[(72, 'a'), (92, 'b'), (85, 'c'), (65, 'd'), (75, 'e'), (69, 'f'), (62, 'g')]
[(92, 'b'), (85, 'c'), (75, 'e'), (72, 'a'), (69, 'f'), (65, 'd'), (62, 'g')]"""#第三种
d= {k:randint(60,100) for k in 'abcdefg'}
print(d.items())
l=sorted(d.items(),key=lambda item:item[1],reverse=True)
print(l)
p= list(enumerate(l,1))
print(p)
t={}for i ,(k,v) inp:
print(i,k,v)
t[k]=(i,v)
print(t)"""True
dict_items([('a', 96), ('b', 85), ('c', 85), ('d', 71), ('e', 87), ('f', 98), ('g', 82)])
[('f', 98), ('a', 96), ('e', 87), ('b', 85), ('c', 85), ('g', 82), ('d', 71)]
[(1, ('d', 95)), (2, ('a', 93)), (3, ('f', 93)), (4, ('c', 91)), (5, ('b', 67)), (6, ('e', 67)), (7, ('g', 62))]1 d 100
2 c 94
3 a 88
4 b 80
5 g 73
6 f 70
7 e 68{'a': (1, 98), 'g': (2, 90), 'f': (3, 84), 'e': (4, 80), 'd': (5, 66), 'c': (6, 65), 'b': (7, 60)}"""
View Code
05如何统计序列中元素的频度
fromrandom import randint
#随机生成一个列表 有重复的数字
data= [randint(0,20) for _ in range(30)]
print(data)
#[16, 3, 6, 0, 4, 20, 1, 0, 13, 16, 13, 6, 14, 13, 16, 4, 14, 9, 12, 5, 4, 6, 1, 7, 18, 5, 6, 15, 14, 5]
#列表每个元素作为键,值默认为0(出现个数)
d= dict.fromkeys(data,0)
print(d)
#{16: 0, 3: 0, 6: 0, 0: 0, 4: 0, 20: 0, 1: 0, 13: 0, 14: 0, 9: 0, 12: 0, 5: 0, 7: 0, 18: 0, 15: 0}
#迭代列表 遇到某个数值就+1统计数字出现个数for x indata:
d[x]+= 1print(d)
#{16: 3, 3: 1, 6: 4, 0: 2, 4: 3, 20: 1, 1: 2, 13: 3, 14: 3, 9: 1, 12: 1, 5: 3, 7: 1, 18: 1, 15: 1}
p= sorted([(v,k) for k,v in d.items()],reverse=True)
print(p)
#[(5, 19), (2, 17), (2, 16), (2, 12), (2, 8), (2, 6), (2, 4), (2, 3), (2, 1), (2, 0), (1, 20), (1, 15), (1, 14), (1, 10), (1, 9), (1, 7), (1, 2)]
05.1 collection 统计频率
from random import randint
from collections import Counter
#随机生成一个列表 有重复的数字
data = [randint(0,20) for _ in range(30)]
# print(data)
p = Counter(data)
l=p.most_common(3)
print(p)
print(l)
Counter({4: 4, 11: 3, 6: 3, 7: 3, 3: 2, 17: 2, 9: 2, 20: 2, 0: 2, 10: 1, 16: 1, 2: 1, 13: 1, 15: 1, 12: 1, 18: 1})
[(4, 4), (11, 3), (6, 3)]
6,如何快速找到多个字典中的公共键key
第一种:
fromrandom import randint,sample
# print(sample('abcdefgh',3))
#['g', 'e', 'b'] 随机
d1={k:randint(1,4) for k in sample('abcdefgh',randint(3,6)) }
# print(d1)
#随机返回3-6名球员 和 进球数
#{'d': 2, 'f': 1, 'e': 1, 'g': 3, 'c': 3, 'b': 2}
d2={k:randint(1,4) for k in sample('abcdefgh',randint(3,6)) }
d3={k:randint(1,4) for k in sample('abcdefgh',randint(3,6)) }
dl=[d1,d2,d3]
#3轮都有进球的球员
print( [kfor k in dl[0] if all(map(lambda d:k in d,dl[1:]))])
#解释
#map(lambda d:kin d,dl[1:]) 和PHP的array_map一样的作用
#判断k 是否在d2,d3中 all()表示全在
第二种方法:
from random import randint,sample
from functools import reduce
# print(sample('abcdefgh',3))
#['g', 'e', 'b'] 随机
d1={k:randint(1,4) for k in sample('abcdefgh',randint(3,6)) }
# print(d1)
#随机返回3-6名球员 和 进球数
#{'d': 2, 'f': 1, 'e': 1, 'g': 3, 'c': 3, 'b': 2}
d2={k:randint(1,4) for k in sample('abcdefgh',randint(3,6)) }
d3={k:randint(1,4) for k in sample('abcdefgh',randint(3,6)) }
dl = [d1,d2,d3]
#3轮都有进球的球员
print(d1.keys())
print(dict.keys(d1))
d = map(dict.keys,dl)
dd = reduce(lambda a,b:a & b,map(dict.keys,dl))
print(dd)
dict_keys(['f', 'b', 'a', 'c', 'e', 'd'])
dict_keys(['f', 'b', 'a', 'c', 'e', 'd'])
{'f', 'd', 'a', 'b'}
7,如何让字典保持有序
from collections import OrderedDict
from random import shuffle
from itertools import islice
od = OrderedDict()
od['c'] = 1
od['b'] = 2
od['a'] = 3
print(od.keys())
players = list('abcdefgh')
shuffle(players)
print(players)
od = OrderedDict()
for i,p in enumerate(players,1):
od[p] = i
print(od)
def queryByOrder(d,a,b=None):
a -= 1
if b is None:
b = a+1
return list(islice(od,a,b))
print(queryByOrder(od,2,4))
odict_keys(['c', 'b', 'a'])
['c', 'd', 'a', 'e', 'b', 'g', 'f', 'h']
OrderedDict([('c', 1), ('d', 2), ('a', 3), ('e', 4), ('b', 5), ('g', 6), ('f', 7), ('h', 8)])
['d', 'a', 'e']
8,如何实现用户历史记录功能
from random import randint
def guess(n,k):
if n == k:
print('猜对了,这个数字是%d.' % k)
return True;
if n < k:
print('猜大了,比%d小.' % k)
elif n > k:
print('猜小了,比%d大.' % k)
return False
def main():
n = randint(1,100)
i = 1
while True:
line = input('[%d] 请输入一个数字:' % i)
if line.isdigit():
k = int(line)
i += 1
if guess(n,k):
break
elif line == 'quit':
break
if __name__ == '__main__':
main()
[1] 请输入一个数字:24
猜小了,比24大.
[2] 请输入一个数字:56
猜小了,比56大.
[3] 请输入一个数字:4
猜小了,比4大.
[4] 请输入一个数字:
from collections import deque
q = deque([],5)
q.append(1)
q.append(2)
q.append(3)
q.append(4)
q.append(5)
print(q)
q.append(6)
print(q)
deque([1, 2, 3, 4, 5], maxlen=5)
deque([2, 3, 4, 5, 6], maxlen=5)
1 fromrandom import randint2 fromcollections import deque3 def guess(n,k):4 if n ==k:5 print('猜对了,这个数字是%d.' %k)6 returnTrue;7 if n
python3实用编程技巧_Python3实用编程技巧进阶一相关推荐
- python3编程教学_Python3 网络编程
Python3 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...
- 5个技巧,帮助编程新手培养持续学习能力
作为非科班出身的编程新手 如何在课程学习之外 培养自己在编程方面的持续自学能力? 今天小编整理了 5个实用的编程技巧 帮助编程新手 收获持续成长的编程能力 往下看,点亮新技能???? 技巧01 ...
- 10个C#编程和Visual Studio使用技巧
10个C#编程和Visual Studio使用技巧 http://developer.51cto.com 2010-09-28 08:52 黄永兵 译 51CTO.com 我要评论(1) C# ...
- cad统计多条线段总长度插件_超级实用CAD技巧应用汇总!技巧大全、插件合集、快捷键合集等...
超级实用CAD技巧应用汇总!技巧大全.插件合集.快捷键合集等 各位朋友,CAD福利来啦!超级实用CAD技巧应用汇总,千万不能错过!有技巧大全.插件合集.快捷键合集.字体大全.常用图库大全.常见问题及解 ...
- 计算机音乐绅士教程,教你学唱薛之谦的《绅士》,这个技巧很实用值得收藏!...
原标题:教你学唱薛之谦的<绅士>,这个技巧很实用值得收藏! 许多小伙伴都很喜欢听薛之谦的歌,我本人也不例外,那么今天我们来讲一下没有歌唱基础的人,怎么唱好薛之谦的<绅士>.首先 ...
- excel单元格斜线_最实用的8个Excel操作技巧,1分钟学会!
今天我们用8张图,来学习一下最实用的8个Excel操作技巧. 一.如何给汉字加上拼音 二.手机号码分段输入 三.快速颠倒文字方向 四.快速插入拼音音调 五.快速制作勾选框 六.金额快速添加单位:万 七 ...
- 《Go语言精进之路,从新手到高手的编程思想、方法和技巧1》读书笔记和分享
Go语言精进之路,从新手到高手的编程思想.方法和技巧 读书分享 1 本书定位 2 本书内容总览 3 选择本书的原因 4 小收获分享 第7-12条 真的不知道咋命名 第13-19条 能用--怎么用更好 ...
- google 搜索十大搜索技巧和实用小技巧
正确的搜索方式 Google是一个非常精密成熟的搜索引擎,但大多数的用户都没有能完全地利用到它的能力.一般人就是在Google的搜索框中输入一两个关键字,然后点击"搜索"按钮,等着 ...
- 教你百分百实用监控安装摄像头的方法与技巧
教你百分百实用监控安装摄像头的方法与技巧 监控安装指导与注意事项 A.线路安装与选材 1.电源线:要选"阻燃"电缆,皮结实,在省成本前提下,尽量用粗点的,以减少 ...
- 怎么画简单动漫人体?这个技巧很实用!
怎么画简单动漫人物?这个技巧很实用!画漫画首先要搞定人体,今天带大家了解人体的动作以及练习,首先需要理解自己笔下"人"的体积,没有体积意识一定会很糟糕,理解体积后看画和画画时你看到 ...
最新文章
- php 时间倒计时代码 个人写法 有好的想法的欢迎贴出来分享
- c语言基础 验证ascii 码表
- Vue.2.0.5-模板语法
- SpringMvc异步请求的使用及部分原理
- kafka分区分配策略
- docker部署webapp的例子
- arduino UNO 点亮LED例程
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-04 自定义Zuul过滤器实现登录
- ffmpeg可支持的编码器、解码器、封装格式、网络协议
- C语言单片机笔试题,c语言面试题集(单片机
- python - 数据类型
- 栈(LIFO:后进先出)
- html 九宫格头像,JAVA-仿微信九宫格头像
- 猫推荐算法大赛Top 9团队
- java des ecb_【转】 java DES ECB模式对称加密解密
- 第1讲 样本空间 随机事件
- APP流量变现之穿山甲广告平台接入
- Unity(协程是什么,怎么用)
- 最新WIN10系统封装教程2019系列(五)——使用工具优化与清理
- MySQL练习(学生表,课程表,选课表)超详解