python之路——16
王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594
学习内容
1.内置函数
1. python 数据类型:int bool
数据结构:dic list tuple set str
2. reversed 反转
3. slice 切片
4. format
5. bytes 转换成bytes类型 编码转换用
网络编码 只能用二进制
照片和视频以二进制存储
html网页爬取到的也是编码
6. bytearray bytes未完整字节修改不方便,bytearray类似于列表,修改方便
7. memoryview
8. ord 字符按照unicode转数字
9. chr 数字按照unicode转字符
10. ascii
11. repr (%r格式化输出)让数据原封不动输出
12. dict set
13. frozenset(不可变集合)
14. all 可迭代的 与运算; any 可迭代的 或运算
15. zip 拉链
16. filter 只筛选,不改变值
map 值可能变换,个数不变
17. sorted 排序
2.匿名函数
为实现简单功能,一行写成的函数
代码区
1.关于bytes 代码转换
print('你好')
print(bytes('你好', encoding='GBK')) # unicode 转换成GBK的bytes
print(bytes('你好', encoding='utf-8')) # unicode 转换成utf-8的bytes
print(bytes('你好', encoding='utf-8').decode('utf-8'))
2.filter 过滤非字符串
def is_odd(x):
if type(x) == type('s'):
return x
ret = filter(is_odd, [0,'asd','1 ', '',None,4,5,6,7,8,9])
print(ret)
for i in ret:
print(i)
3.利用filter过滤1-100中开平方为整数的数
from math import sqrt
def func(num):
res = sqrt(num)
return res%1 == 0 def fun(num):
res = sqrt(num)
res_int = int(res)
return res_int == res
ret = filter(fun,range(1,101))
for i in ret:
print(i)
4.,max min filter map sorted ——lambda 合作
# 求字典值最大值 max+lambda
'''
def func(key):
return dic[key]
dic = {'k1':10,'k2':1000,'k3':120}
print(max(dic,key=func))
print(max(dic,key=lambda k:dic[k]))
''' # 求列表元素的平方 map+lambda
'''
ret = map(lambda x:x**2,[1,3,5,7,9])
print(ret)
for i in ret:
print(i)
''' # 筛选列表中大于10的数
'''
ret = filter(lambda x:x>10,[1,3,4,6,8,4110,1,223,121])
print(ret)
for i in ret:
print(i)
'''
5.员工大礼包
# 我的答案,这个是关键dic = {'id': 0, 'name': 1, 'age': 2, 'tel': 3, 'job': 4, }
'''
def get_line(filename):
with open(filename,encoding='utf-8') as f1:
for line in f1:
line = line.strip()
line_lis = line.split(',')
yield line_lis
# 接受用户信息
ret = 'select name,job where tel like 133'
view, condition = ret.split('where')
view = view.replace('select', ' ').strip()
view_list = view.split(',')
print(view_list, condition)
dic = {'id': 0, 'name': 1, 'age': 2, 'tel': 3, 'job': 4, }
def con_filter(condition):
g = get_line('log')
for i in g:
if '>' in condition:
cond_l = condition.split('>')
if int(i[dic[cond_l[0].strip()]]) > int(cond_l[1]):
if view_list[0].strip() == '*':
print(i)
else:
for j in view_list:
print('%s: %s' %(j, i[dic[j.strip()]]), end=',')
print(' ')
elif '<' in condition:
cond_l = condition.split('<')
if int(i[dic[cond_l[0].strip()]]) < int(cond_l[1]):
if view_list[0].strip() == '*':
print(i)
else:
for j in view_list:
print('%s: %s' % (j, i[dic[j.strip()]]), end=',')
print(' ')
elif '=' in condition:
cond_l = condition.split('=')
if int(i[dic[cond_l[0].strip()]]) == int(cond_l[1]):
if view_list[0].strip() == '*':
print(i)
else:
for j in view_list:
print('%s: %s' % (j, i[dic[j.strip()]]), end=',')
print(' ')
elif 'like' in condition:
cond_l = condition.split('like')
if cond_l[1].strip() in i[dic[cond_l[0].strip()]]:
if view_list[0].strip() == '*':
print(i)
else:
view_list.append('tel')
for j in view_list:
print('%s: %s' % (j, i[dic[j.strip()]]), end=',')
# print('tel:%s'%i[dic['tel']], end=',')
print(' ')
con_filter(condition)
'''
# 老师答案,做到解耦,分步操作,注释
'''
# 接收用户信息——分析信息
ret = 'select name,job, age where tel like 133'
view, condition = ret.split('where')
view = view.replace('select', ' ').strip()
view_list = view.split(',')
condition = condition.strip()
print(view_list, condition)
# 对照表
dic = {'id': 0, 'name': 1, 'age': 2, 'tel': 3, 'job': 4, }
# 读取文件——将文件信息整理到内存
def get_line(filename):
with open(filename, encoding='utf-8') as f1:
for line in f1:
line = line.strip()
line_list = line.split(',')
yield line_list
# 筛选员工——根据信息筛选内存中提取的信息
def condition_filter(condition):
g = get_line('log')
for line_list in g:
if '>' in condition:
col, val = condition.split('>')
if int(line_list[dic[col]]) > int(val):
yield line_list
elif '<' in condition:
col, val = condition.split('<')
if int(line_list[dic[col]]) < int(val):
yield line_list
elif '=' in condition:
col, val = condition.split('=')
if int(line_list[dic[col]]) == int(val):
yield line_list
elif 'like' in condition:
col, val = condition.split('like')
col = col.strip()
val = val.strip()
if val in line_list[dic[col]]:
yield line_list
# 显示——根据筛选结果,显示需要的信息
def viewer(view_list, staff_g):
for staff_info in staff_g:
for i in view_list:
print('%s:%s' % (i.strip(), staff_info[dic[i.strip()]]), end=',')
print(' ')
g = condition_filter(condition)
viewer(view_list, g)
'''
python之路——16的更多相关文章
- 【python之路16】作业
#!usr/bin/env python # -*- coding:utf-8 -*- # 数据库中原有 old_dict = { "#1": {'hostname': 'c1', ...
- 【python之路16】lambda表达式
1.lambda表达式,实际是建立一个简易的函数 下面代码中f1和f2表示是相同过程的代码 def f1(args): return args f2 = lambda args:args print( ...
- python之路 目录
目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...
- Python之路【第十九篇】:爬虫
Python之路[第十九篇]:爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- Python之路【第十七篇】:Django【进阶篇 】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Python之路【第十六篇】:Django【基础篇】
Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了O ...
- Python之路【第十五篇】:Web框架
Python之路[第十五篇]:Web框架 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 ...
- Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...
随机推荐
- Annotations
一.介绍 注解,可以将注解看成一种特殊的接口.是一种特殊种类的元数据,它能够关联Java语言中不同元素和结构.有意思的是,在Java生态系统中大多数使用样板XML描述符的地方,注解在消除这些XML描述 ...
- 团队作业8——敏捷冲刺(Beta阶段)
Beta阶段--第1篇 Scrum 冲刺博客(计划) https://www.cnblogs.com/just-let-it-go/p/9061664.html Beta阶段--第2篇 Scrum 冲 ...
- c# 后台处理获取的JSON 数据
原创: http://www.imooc.com/article/8913 自己的例子: web.config <appSettings> <add key="GmailU ...
- ceph Luminous版手动安装零散记录
1.安装必要的依赖包,关防火墙,向/etc/hosts内添加域名等 2.安装ceph 配置yum源 (如果嫌慢,可以配置cachedir=/home/yum/$basearch/$releasever ...
- Python—装饰器详解
装饰器:(语法糖) 本质是函数,它是赋予函数新功能,但是不改变函数的源代码及调用方式 原则: 1.不能修改被装饰函数的源代码 2.不能修改被装饰函数的调用方式 3.函数的返回值也不变 这两点简而言 ...
- 公网IP被别人恶意解析的后果
在网上看的一个案例,说是自己网站的IP被别的域名恶意解析了,恶意网站没有备案,IP地址为没有备案的域名提供了正常的网站服务,导致对应的IP也被封了. 检查方法:telnet xxx.me 80端口不通 ...
- 组队项目,Main队伍
本小组经过讨论,决定做的项目为----厨娘 分组情况: 1.界面设计:胡骏 2.前段,界面代码实现:梅庆 3.后台.逻辑处理:唐正奎.张军洪.袁成杰 4.数据库的建立与存写:张军洪.蒋利平 厨娘——需 ...
- 《JavaScript Dom 编程艺术》读书笔记-第7章
动态创建标记~内容包括: 1. 传统技术:document.write 和innerHTML 2. 深入剖析DOM方法:createElemen.createTextNode.appendChild和 ...
- AndroidStudio连不上Android设备真机
AndroidStudio连不上Android设备真机 刚好遇到这个问题,查阅了很多资料,看到有人分享了引起该问题的几个原因,我总结了一下: 1.手机设置问题.开USB调试 方法:手机设置-开发人员调 ...
- Fedora 23 U盘启动出现“Failed to load ldlinux.c32”解决 ZT
利用UltraISO制作了Fedora 23的U盘启动,开机F12键USB启动时出现 1 2 Failed to load ldlinux.c32 Boot failed: please chan ...