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实用编程技巧进阶一相关推荐

  1. python3编程教学_Python3 网络编程

    Python3 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...

  2. 5个技巧,帮助编程新手培养持续学习能力

    作为非科班出身的编程新手 如何在课程学习之外 培养自己在编程方面的持续自学能力? 今天小编整理了 5个实用的编程技巧 帮助编程新手 收获持续成长的编程能力 往下看,点亮新技能????   技巧01   ...

  3. 10个C#编程和Visual Studio使用技巧

    10个C#编程和Visual Studio使用技巧 http://developer.51cto.com  2010-09-28 08:52  黄永兵 译  51CTO.com  我要评论(1) C# ...

  4. cad统计多条线段总长度插件_超级实用CAD技巧应用汇总!技巧大全、插件合集、快捷键合集等...

    超级实用CAD技巧应用汇总!技巧大全.插件合集.快捷键合集等 各位朋友,CAD福利来啦!超级实用CAD技巧应用汇总,千万不能错过!有技巧大全.插件合集.快捷键合集.字体大全.常用图库大全.常见问题及解 ...

  5. 计算机音乐绅士教程,教你学唱薛之谦的《绅士》,这个技巧很实用值得收藏!...

    原标题:教你学唱薛之谦的<绅士>,这个技巧很实用值得收藏! 许多小伙伴都很喜欢听薛之谦的歌,我本人也不例外,那么今天我们来讲一下没有歌唱基础的人,怎么唱好薛之谦的<绅士>.首先 ...

  6. excel单元格斜线_最实用的8个Excel操作技巧,1分钟学会!

    今天我们用8张图,来学习一下最实用的8个Excel操作技巧. 一.如何给汉字加上拼音 二.手机号码分段输入 三.快速颠倒文字方向 四.快速插入拼音音调 五.快速制作勾选框 六.金额快速添加单位:万 七 ...

  7. 《Go语言精进之路,从新手到高手的编程思想、方法和技巧1》读书笔记和分享

    Go语言精进之路,从新手到高手的编程思想.方法和技巧 读书分享 1 本书定位 2 本书内容总览 3 选择本书的原因 4 小收获分享 第7-12条 真的不知道咋命名 第13-19条 能用--怎么用更好 ...

  8. google 搜索十大搜索技巧和实用小技巧

    正确的搜索方式 Google是一个非常精密成熟的搜索引擎,但大多数的用户都没有能完全地利用到它的能力.一般人就是在Google的搜索框中输入一两个关键字,然后点击"搜索"按钮,等着 ...

  9. 教你百分百实用监控安装摄像头的方法与技巧

    教你百分百实用监控安装摄像头的方法与技巧    监控安装指导与注意事项     A.线路安装与选材    1.电源线:要选"阻燃"电缆,皮结实,在省成本前提下,尽量用粗点的,以减少 ...

  10. 怎么画简单动漫人体?这个技巧很实用!

    怎么画简单动漫人物?这个技巧很实用!画漫画首先要搞定人体,今天带大家了解人体的动作以及练习,首先需要理解自己笔下"人"的体积,没有体积意识一定会很糟糕,理解体积后看画和画画时你看到 ...

最新文章

  1. php 时间倒计时代码 个人写法 有好的想法的欢迎贴出来分享
  2. c语言基础 验证ascii 码表
  3. Vue.2.0.5-模板语法
  4. SpringMvc异步请求的使用及部分原理
  5. kafka分区分配策略
  6. docker部署webapp的例子
  7. arduino UNO 点亮LED例程
  8. 小D课堂 - 新版本微服务springcloud+Docker教程_6-04 自定义Zuul过滤器实现登录
  9. ffmpeg可支持的编码器、解码器、封装格式、网络协议
  10. C语言单片机笔试题,c语言面试题集(单片机
  11. python - 数据类型
  12. 栈(LIFO:后进先出)
  13. html 九宫格头像,JAVA-仿微信九宫格头像
  14. 猫推荐算法大赛Top 9团队
  15. java des ecb_【转】 java DES ECB模式对称加密解密
  16. 第1讲 样本空间 随机事件
  17. APP流量变现之穿山甲广告平台接入
  18. Unity(协程是什么,怎么用)
  19. 最新WIN10系统封装教程2019系列(五)——使用工具优化与清理
  20. MySQL练习(学生表,课程表,选课表)超详解

热门文章

  1. 归并排序(包含逆序数对的个数51Nod1019)
  2. Hadoop HA集群部署
  3. Apache VirtualHost的配置
  4. MooTools 1.4 源码分析 - Fx
  5. JVM监控及诊断工具命令行篇之jcmd
  6. 并发编程学习之阻塞队列BlockingQueue和LinkedBlockingQueue
  7. concurrentHashMap扩容细节
  8. Spring Data JPA持久层中的一对一和一对多
  9. Mybatis原理解析(四)--查询流程
  10. 代码保护软件 VMProtect 用户手册: 什么是VMProtect?