python学习之老男孩python全栈第九期_day016知识点总结
'''数据类型:
int
bool
... 数据结构:
dict (python独有的)
list
tuple (pytho独有的)
set
str
''' # reverse() 反转
l = [1,2,3,4,5]
l.reverse()
print(l) # reversed() 反转,但它的反转不改变原来的列表且返回一个反序的迭代器
l = [1,2,3,4,5]
l2 = reversed(l)
print(l2) # <list_reverseiterator object at 0x000001DF4CC30940> # slice() 切片
l = [1,2,3,4,5,6,7]
lis = slice(1,5,2)
print(l[lis]) # 和 l[1,5,2] 效果一样 # 字符串
#
# str
#
# format()
#
# http://www.cnblogs.com/Eva-J/articles/7266245.html # bytes 转换成bytes类型 print(bytes('你好',encoding='GBK')) # unicode转换成GBK的bytes
print(bytes('你好',encoding='GBK').decode('GBK'))
print(bytes('你好',encoding='UTF-8')) # unicode转换成utf-8的bytes
print(bytes('你好',encoding='UTF-8').decode('utf-8'))
# 我拿到的是GBK编码的,我想转成UTF-8编码 # 网络编程中 只能传二进制
# 照片和视频也是以二进制存储
# html网页爬取到的也是编码 # bytearray # b_array = bytearray('你好',encoding='UTF-8')
# print(b_array)
# print(b_array[0]) # memoryview # ord
# 字符按照unicode转数字 print(ord('a')) # 97
print(ord('你')) # 20320
# chr
# 数字按照unicode转字符
print(chr(97)) # a # ascii
# 只要是ascii码中的内容,就打印出来,不是就转换成\u
print(ascii('好')) # '\u597d'
print(ascii('a')) # 'a' # repr:用于%r格式化输出
name = 'KID'
print('你好,%s'%name) # 你好,KID name = 'KID'
print('你好,%r'%name) # 你好,'KID',调用了repr print(repr(1))
print(repr('1')) # 会带着符号全部输出 # dict # set # frozenset:不可变的 --------------------------------------------------------------------------------------
# len() enumerate() zip() filter() map() sorted() # len :长度 # enumerate: 枚举 all : 列表里面存在有False的就输出false
print(all(['a','',123])) # False
print(all(['a',123])) # True
print(all([0,123])) # False # any()
print(any([0,123])) # True zip():返回一个迭代器
l = [1,2,3]
l2 = ['a','b','c']
print(zip(l,l2)) # <zip object at 0x000001F908DC68C8>
for i in zip(l,l2):
print(i)
(1, 'a')
(2, 'b')
(3, 'c') 个数不一样
l = [1,2,3]
l2 = ['a','b','c','d']
for i in zip(l,l2):
print(i)
(1, 'a')
(2, 'b')
(3, 'c') 个数不一样
l = [1,2,3,4]
l2 = ['a','b','c']
for i in zip(l,l2):
print(i)
(1, 'a')
(2, 'b')
(3, 'c') 类型不一样:列表与元组
l = [1,2,3]
l2 = ('*','+++',[1,2])
for i in zip(l,l2):
print(i)
(1, '*')
(2, '+++')
(3, [1, 2]) 列表与字典
l = [1,2,3]
l2 = {'*':'+++','sdf':[l]}
for i in zip(l,l2):
print(i)
(1, '*')
(2, 'sdf') 只输出keys filter() http://www.cnblogs.com/Eva-J/articles/7266192.html 要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数
def is_odd(x):
return x % 2 == 1
ret = filter(is_odd, [1, 4, 6, 7, 9, 12, 17]) # 里面第一个必须是函数的名字,不能加括号
print(ret) # 迭代器 <filter object at 0x000001B7039886A0>
返回迭代器,是为了节省内存
for i in ret:
print(i)
1
7
9
17 相当于做一个筛选 # # 与下面这种写法一样
# [i for i in [1, 4, 6, 7, 9, 12, 17] if i % 2 == 1]
# # 只返回字符串类型
# def is_str(s):
# return type(s) == str
# ret = filter(is_str, [1, 4, 're', '7', 9, 12, 17])
# for i in ret:
# print(i)
# re
# 7 # 利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串:
# def is_not_empty(s):
# return s and str(s).strip()
# ret = filter(is_not_empty, [1,'test', None, [], '', 'str', ' ', 'END'])
# print(ret) # <filter object at 0x000001D14BDC6B00>
# for i in ret:
# print(i)
# test
# str
# END # 请利用filter()过滤出1~100中平方根是整数的数,即结果应该是: # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# import math
# def func(num):
# return math.sqrt(num) % 1 == 0
# ret = filter(func,range(1,101))
# for i in ret:
# print(i)
#
# # map
# ret = map(abs,[1,2,4,-4,-8])
# print(ret) # <map object at 0x0000012F344169B0>
# for i in ret:
# print(i)
#
# # filter: 执行了filter之后的结果集合一定小于或等于之前的个数
# # filter只管筛选,不会改变原来的值
# # map:执行前后元素个数不变,
# # 值可能发生改变
#
# # sorted
#
# # http://www.cnblogs.com/Eva-J/articles/7265992.html
#
# # sort
# l = [1,-4,6,-8,10]
# l.sort() # [-8, -4, 1, 6, 10]
# print(l)
#
# l = [1,-4,6,-8,10]
# l.sort(key=abs) # [1, -4, 6, -8, 10]
# print(l)
#
# # sorted
#
# l = [1,-4,6,-8,10]
# print(sorted(l)) # [-8, -4, 1, 6, 10]
# print(l) # [1, -4, 6, -8, 10]
# # sort直接改变原列表
# # 生成一个新列表,占内存。
# # 说明l还在,在列表不大的时候可以用,且要保留原列表时。
#
#
# # 2.
# # 列表按照其中每一个值的绝对值排序
# li = [1,-2,3,-48,78,9]
# print(sorted(li,key = abs)) # [1, -2, 3, 9, -48, 78]
#
# 3.
# 列表按照每一个元素的len排序
li = [(1,-2),[3],[-48,78,9],'hello world']
ret = sorted(li,key = len)
print(ret) # [[3], (1, -2), [-48, 78, 9], 'hello world']
----------------------------------------------------------------------------------
# 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数 # 这段代码
def calc(n):
return n ** n print(calc(10)) # 换成匿名函数
calc = lambda n: n ** n
print(calc(10)) # 函数名 = lambda 参数 :返回值 #参数可以有多个,用逗号隔开
#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
#返回值和正常的函数一样可以是任意数据类型 # 请把以下函数变成匿名函数
def add(x,y):
return x+y ret = lambda x,y:x+y
print(ret(5,6)) # 上面是匿名函数的函数用法。除此之外,匿名函数也不是浪得虚名,它真的可以匿名。在和其他功能函数合作的时候 l=[3,2,100,999,213,1111,31121,333]
print(max(l)) dic = {'k1':10,'k2':100,'k3':30}
# print(max(dic))
print(max(dic,key= lambda k:dic[k])) #map
res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
print(i)
#filter
res = filter(lambda x:x>10,[5,8,11,9,15])
for i in res:
print(i) # min max filter map sorted --> lambda 现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}] 看到匿名函数,就要想到肯定会带着考内置函数,而和匿名函数相关的内置函数只有5个:min max filter map sorted
排除法想到map # 没用匿名函数
tu1 =(('a'),('b'))
tu2 =(('c'),('d'))
res = zip(tu1,tu2)
def func(tup):
return {tup[0]:tup[1]}
ret = map(func,res)
# for i in ret:
# print(i)
list(ret) # 用匿名函数
tu1 =(('a'),('b'))
tu2 =(('c'),('d'))
res = zip(tu1,tu2)
# def func(tup):
# return {tup[0]:tup[1]}
ret = map(lambda tup:{tup[0]:tup[1]},res)
# for i in ret:
# print(i)
print(list(ret)) # 简化后:
print(list(map(lambda tup:{tup[0]:tup[1]},zip((('a'),('b')),(('c'),('d'))))))
python学习之老男孩python全栈第九期_day016知识点总结的更多相关文章
- python学习之老男孩python全栈第九期_day027知识点总结——反射、类的内置方法
一. 反射 ''' # isinstance class A:pass class B(A):pass a = A() print(isinstance(a,A)) # 判断对象和类的关系 print ...
- python学习之老男孩python全栈第九期_day023知识点总结——类和对象命名空间、组合
一. 类和对象命名空间类里 可以定义两种属性: 1. 静态属性 2. 动态属性 class Course: language = 'Chinese' def __init__(self, teache ...
- python学习之老男孩python全栈第九期_day019知识点总结——collections模块、时间模块、random模块、os模块、sys模块
一. collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counte ...
- python学习之老男孩python全栈第九期_day017知识点总结——初识递归、算法
一. 递归函数 如果一个函数在内部调用自身本身,这个函数就是递归函数. 最大递归深度默认是997 -- python从内存角度出发做得限制(而不是程序真的报错),最大深度可以修改 def func(n ...
- python学习之老男孩python全栈第九期_day010知识点总结
def qqxing(l = []): # 可变数据类型 l.append(1) print(l)qqxing() # [1]qqxing([]) # [1]qqxing() # [1, 1]qqxi ...
- python学习之老男孩python全栈第九期_day007知识点总结
基础数据类型汇总 1. str 2. int 3. list 4. bool 5. dict (1) fromkeys Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对 ...
- python学习之老男孩python全栈第九期_day001知识点总结
1. Python2与Python3的区别: Python2:源码不标准,混乱,重复代码太多: Python3:统一标准,去除重复代码. 编码方式: python2的默认编码方式为ASCII码:pyt ...
- python学习之老男孩python全栈第九期_day014知识点总结
# 迭代器和生成器# 迭代器 # 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的# 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir ...
- python学习之老男孩python全栈第九期_day015知识点总结
# 作用域相关(2)locals() # 返回本地作用域中的所有名字 globals() # 返回全局作用域中的所有名字 # 迭代器/生成器相关(3)range()print('__next__' i ...
随机推荐
- LayUI把表格中的时间戳改成格式化的时间
- (2)特征点匹配,并求旋转矩阵R和位移向量t
include头文件中有slamBase.h # pragma once // 各种头文件 // C++标准库 #include <fstream> #include <vector ...
- maven项目发布到tomcat后没有lib目录解决方案
maven项目放入tomcat中时,总是报错,而且这些jar都是真实存在的,错误如下: maven eclipse tomcat java.lang.ClassNotFoundException: o ...
- centos6下无法使用lsof命令"-bash: lsof: command not found"
1. 问题描述在centos下, 无法使用命令lsof, 出现以下信息:# lsof -i:3690-bash: lsof: command not found2. 解决方法我们可以通过yum来安装: ...
- Class 和 MetaClass
在 OC 中,类的一个实例定义如下: /// Represents an instance of a class. struct objc_object { Class _Nonnull isa OB ...
- pg_stat_statements跳过的坑
pg_stat_statements跳过的坑 原本以为只是一个简单的插件扩展安装,三下五除二就能搞定,结果搞了很久也没找到问题所在.首先pg_stat_statements已经安装成功,且已经能够使用 ...
- python3模块: uuid
一. 简介 UUID是128位的全局唯一标识符,通常由32字节的字母串表示.它可以保证时间和空间的唯一性,也称为GUID. 全称为:UUID--Universally Unique IDentifie ...
- python3 内置函数详解
内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小. # 如果参数是复数,则返回其大小. >>> abs(-25) 25 >&g ...
- 使用git时出现Please make sure you have the correct access rights and the repository exists.问题已解决。
使用git时,出现Please make sure you have the correct access rights and the repository exists.问题已解决. 今天我在使用 ...
- sqlserver监控阻塞(死锁)具体情况(转)
公司sqlserver的监控系统主要是采用zabbix监控,但是zabbix的监控只能通过性能计数器给出报警,而无法给出具体的阻塞情况,比如阻塞会话.语句.时间等,所以需要配合sqlserver的一些 ...