01 昨日内容回顾

字典:
映射,{} 键值对的形式存储,容器型数据类型,key 唯一的,可哈希的,value任意数据类型,对象.
3.6之前无序的,
3.6之后,有序的(第一次创建字典的顺序)
特点:
    存储大量的关系型数据.
    查询速度快.
缺点: 占用空间比较大.
增:
    # 有则修改,无责增加
    dic['name'] = 'alex'
    # 有责不变,无责增加
    dic.setdeafult(key,value)
删:
    pop 按照key删除,返回值value
    popitem 删除最后一个.返回值,是一个元组 (key,value)
    clear()
    del dic[key]
    del dic
改: dic['name'] = 'alex'
    dic.update(name='alex',age=73)
    dic.update(dic1)
查:
    dic[key] 没有此键 报错
    dic.get(key) 有就返回,没有就返回None
    dic.get(key,'返回值')
    dic.keys() values()  items()

02 作业讲解

03 小数据池(了解)

s='alex'
print(id(s))#获取内存地址

==判断两个对象的值相同.
i=100
i1=100
print(i==i1)

is身份运算:判断的是两个对象的内存地址是否相同.

i1=10
i2=10
print(i1isi2)

代码块
i=1
i2=3
i3=4

一个文件是一个代码块.(函数,类都是一个代码块.)
交互命令中一行就是一个代码块.

同一个代码块:同一代码块的缓存机制,驻留机制.

i1=100
i2=300
i3=100
l1=[1,2,3]
l2=[1,2,3]
print(l1isl2)
tu1=(1,2,)
tu2=(1,2,)

print(tu1istu2)

同一个代码块驻留机制的目的:
'''
1,节省内存空间.
2,提升性能.
'''
驻留机制针对的对象:intboolstr()空元组.

int:范围任意数字
i1=1212312312312312312312312
i2=1212312312312312312312312
print(i1isi2)
boolTrueFasle
str:几乎所有的字符串都会符合缓存机制,
s1='fdsfdsjklffdsafdsadsjfkldsfldsfdsjlkfdsl@#$'
s2='fdsfdsjklffdsafdsadsjfkldsfldsfdsjlkfdsl@#$'
print(s1iss2)
通过相乘的形式构建的字符串长度不能超过20满足同一代码块的驻留机制.
s1='old_'*5
s2='old_'*5
print(s1iss2)#True

不同的代码块之间:小数据池.
小数据池是针对不同代码块之间的缓存机制!!!

小数据池的目的:
'''
1,节省内存空间.
2,提升性能.
'''
小数据池针对的对象:intboolstr()空元组.

int:-5~256
str:一定规则的字符串

总结
'''
    如果在同一代码块下,则采用同一代码块下的换缓存机制。
    如果是不同代码块,则采用小数据池的驻留机制。
'''
i1=1000
i2=1000
print(i1isi2)

04 数据类型的补充

数据类型之间的转换
int bool str list tuple dict     set
'''int bool str 三者转化是可以的.'''

bool 可以与所有的数据类型进行转换.
所有为空的数据类型转化成bool都为Fasle.
0 '' [] () {} None   ----> Fasle
print(bool([]))  # False

str  ---> list  split 分割
list ---> str   join  # list里面的元素全部都是str类型
l1 = ['武sir', 'alex', '太白']
print(' '.join(l1))

str ----> tuple  # partition
tuple ---> str   join
tu1 = ('武sir', 'alex', '太白')
ret = ' '.join(tu1)
print(ret,type(ret))

list<----->tuple
l1 = ['武sir', 'alex', '太白']
print(tuple(l1))
tu1 = ('武sir', 'alex', '太白')
print(list(tu1))

dict ----> list
dic = {'name':'alex','age': 73}
print(list(dic))

set list 转化 下午讲.

tuple: 如果元组中只有单个元素并且没有 , 则类型是元素本身的类型.
tu1 = (1)
tu1 = ('alex',)
print(tu1,type(tu1))

dict
dic = {'name':'alex','age': 73}
dic['money'] = '10万'
print(dic)

dic = dict.fromkeys([1,2,3],'太白')
dic = dict.fromkeys('abcd','太白')
dic = dict.fromkeys('abcd',[1,])
坑: 如果你的值是一个可变的数据类型, 他在内存中是一个.id相同.
dic = dict.fromkeys('abcd',[])
dic['a'].append(666)
dic['b'].append(111)
dic['c'].append(222)
print(dic)

l1 = [1,2,3]
l2 = l1
l3 = l2
l1.append(666)
l2.append(111)
print(l1)

l1 = [11, 22, 33, 44, 55]
将此列表索引为奇数位对应的元素全部删除.

方法一:
del l1[1::2]
print(l1)

方法二:错误示例:

循环一个列表时,不要改变列表的大小.这样会影响你最后的结果.
for index in range(len(l1)):
   if index % 2 == 1:
       # index 奇数
       l1.pop(index)
print(l1)

方法三
new_l = []
for index in range(len(l1)):
   if index % 2 == 0:
       new_l.append(l1[index])
print(new_l)
l1 = new_l
print(l1)

方法三:
for index in range(len(l1)-1,-1,-1):
   if index % 2 == 1:
       l1.pop(index)
print(l1)

循环一个列表时,最好不要对原列表有改变大小的操作,这样会影响你的最终结果.

dic = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'name': 'alex'}
将字典中的key中含有k元素的所有键值对删除.
dictionary changed size during iteration
for key in dic:
   if 'k' in key:
       dic.pop(key)
print(dic)

l1 = []
for key in dic:
   if 'k' in key:
       l1.append(key)
print(l1)
for key in l1:
   dic.pop(key)
print(dic)

循环一个字典时,不能改变字典的大小,这样会报错.

set and frozenset

回顾:字典特点:

1.key是唯一的.

2.key必须是可以哈希的(不可变数据类型:字符串,元组,数值)

3.key是无序的.

3.6中dict的元素有序是解释器的特点,不是python源码的特点.
xxx.py
Cpython -> 有序
Jpython -> 无序
集合:set
实际上就是一种特殊的字典.
所有value都是None的字典,就是集合.

对比字典和集合的特点:
字典  集合
Key唯一   元素唯一
Key可以哈希 元素可以哈希
Key无序   元素无序

如何获取集合?
1.手动创建集合.
1.创建空集合
d = {}
创建空集合,只有一种方式:调用set函数.
S = set()

2.创建带元素集合
S = {1,2,3}
从可迭代对象中(字符串,列表,元组,字典)创建集合.
s = set(‘abc’)
S = set([1,2,3])
S = set((1,2,3))
S = set({‘name’:’Andy’,’age’:10})

2.通过方法调用
-> str
-> list
-> set

集合的操作:
查看集合可用的方法:
[x for x in dir(set) if not x.startswith(‘_’)]

['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

增:
    add:如果元素存在,没有做任何动作.

删:
Pop()       :依次从集合中弹出一个元素,如果集合为空,报错
Discard(ele)    :从集合中删除指定的元素,如果不存在,什么都不执行
Remove(ele) :从集合中删除指定的元素,如果不存在,报错
Clear()     :清空

集合的四大常用操作:
并集:union
交集:intersection
差集:difference
对称差:symmetric_difference

改(更新):
Update  :用二者的并集更新当前集合
difference_update:用二者的差集更新当前集合
intersection_update:用二者的交集更新当前集合
symmetric_difference_update:用二者的对称差集更新当前集合

判断功能:
Isdisjoint:判断两个集合是否没有交集
Issubset:判断当前集合是否是后者的子集
Issuperset:判断后者是否是当前集合的子集

查
集合基本没有单独取其中元素的需求.

集合的使用场景:
1.判断一个元素是否在指定的范围之内.
2.方便数学上的集合操作.
并,交,差,对称差
有简化写法:
并:|
交:&
差:-
对称差:^

3.对序列数据类型中的重复元素进行去重

如果想遍历集合中的元素.
通常用for循环.

frozenset:冻结的集合
最大的特点:不可变.

['copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union']

少了添加,更新的方法.

s = frozenset()

s = frozenset('abcabc')
s = frozenset([1,2,3])
s = frozenset((1,2,3))
s = frozenset({'name':'Andy','age':10})

集合的四大方法:并,交,差,对称差.
set,frozenset是否可以混用?
可以!
总结:
如果两种数据类型混用,方法的主调者的类型决定了最终结果的类型.

frozenset应用场景:
凡是使用到不可改变的数据的场景,都是可以使用frozenset的.

set集合的元素:必须是可以哈希的,set本身不是可以哈希.
但是frozenset是不可变的数据.(可以哈希的),它是可以放到集合中.

set和frozenset可以互相转换.

总结:

小数据池 理解
代码块.
id == is
同一个代码块中的缓存机制.
不同代码块:小数据池.
数据类型的转换:***.
(1,)
formkeys([1,2,3], [])
循环一个列表,循环一个字典时,不能改变它们的大小,会报错.

下午安排:

1,总结(课上代码敲至少3遍).

2,list dict 增删改查所有方法还没有记牢的,一定要多练,背过.

3,博客.

4,今天的作业比较少,今天作业做完了,将前两天的作业,反复做2遍.

5,明天内容:

编码进阶.

文件操作.

下午:

深浅copy.

05 编码的进阶

06 深浅copy

2019-03-07-day006-小数据池的更多相关文章

  1. python2与python3的区别 ,小数据池 bytes 类型

    一.python2和3的区别 在python3中 在python2中 print('ab')方式打印内容()括号是必须要有的.   print 'ab' 可以加可以不加. 只有range   有ran ...

  2. id,is的用法,小数据池的概念及编码知识进阶

    一:id 查询内存地址 name = 'alex' print(id(name)) li = [1,2,3] print(id(li)) 二:is  判断的是内存地址 name1 = 'alex@' ...

  3. 07_Python变量内存地址、小数据池

    一.变量在内存中的地址 变量:用来标识(identify)一块内存区域.为了方便表示内存,我们操作变量实质上是在操作变量指向的那块内存单元.编译器负责分配.我们可以使用Python内建函数id()来获 ...

  4. Python二次编码、小数据池之心照神交

    二次编码.解码.小数据池: encode(str:编码):参数编码方式,返回字节码. str_1 = "编码" str_2 = str_1.encode("utf-8&q ...

  5. day4-python基础-小数据池以及深浅copy浅讲

    今天的目录是 1.小数据池 2.深浅copy 正文开始 1.小数据池 在说明今天的内容前,先说明一个在今天重复用到的一个知识点 ###比较’=’俩边的数据是否完全相同,以及判断一个对象的内存地址是否完 ...

  6. Python小数据池和字典操作

    小数据池 #id 查看内存地址 #多个代码块可以使用小数据池 #一个代码块中有一个问题,就是重复使用 #数字 -5~256 #字符串 字符串 乘法总数长度不能超过20, 0,1除外 #不能有特殊字符 ...

  7. python基础之小数据池、代码块、编码和字节之间换算

    一.代码块.if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) for i in '12324354': print(i) 虽 ...

  8. python之路day06--python2/3小区别,小数据池的概念,编码的进阶str转为bytes类型,编码和解码

    python2#print() print'abc'#range() xrange()生成器#raw_input() python3# print('abc')# range()# input() = ...

  9. range 小数据池介绍

    1.range 2.小数据池 1. range 范围 [起始位置:终止位置:步长]range(起始位置,终止位置,步长) #顾头不顾尾 3.小数据池 小数据池,也称为小整数缓存机制,或者称为驻留机制等 ...

  10. python -- 小数据池 is和 == 再谈编码

    1.小数据池 python程序是由代码块构成的,一个代码块的文本作为python程序的执行单元. 代码块:一个模块,一个函数,一个类,甚至一个command命令都是一个代码块,一个文件也是一个代码块, ...

随机推荐

  1. array_unique

    array_unique() 函数移除数组中的重复的值,并返回结果数组. 当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除. 返回的数组中键名不变. <?php $a=array(& ...

  2. poj-2115-exgcd

    C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 32062   Accepted: 9337 Descr ...

  3. 详解Oracle数据字典

    Oracle通过数据字典来管理和展现数据库信息,数据字典通常储存数据库的元数据,是数据库的“数据库”.通常说的数据字典由4部分组成:内部RDBMS(X$)表.数据字典表.动态性能视图(V$)和(静态) ...

  4. Qt绘制文本一

    QPainterPath,使用 drawText且设置字体,再使用painter.drawText方式 效果图: void WgtText::paintEvent(QPaintEvent *event ...

  5. vuex的学习例子

    最近在学习vuejs,一直有听说vuex,用来实现多组件共享的一种状态管理模式,但是网上都说,不要为了用vuex而用vuex,大概意思就是尽量少用vuex,一些小项目可以用bus来实现组件之间的传值问 ...

  6. jq 如何获取多选框选中的值

    jquery如何获取多选框选中的值,有两种方法 1.通过id获取是否选中(单个) 1)引入jquery文件 2)Html设计如下 <div> <span>运动类:</sp ...

  7. js之窗口位置

    IE,Safari,Opera和Chrome都提供了screenLeft和screemTop属性,分别用于表示窗口相对于屏幕左边和上边的位置.FireFox则提供了screenX和screenY.使用 ...

  8. js代码之编程习惯

    编程习惯: 异常处理 如果你没有使用异常处理的习惯,这可能是因为你并未真正的理解它的作用.当你正确使用异常处理之后,你会发现你的代码最显著的变化就是:少了很多的 if-else 语句 . 虽然在 JS ...

  9. Zookeeper面试题

    Zookeeper是什么框架 分布式的.开源的分布式应用程序协调服务,原本是Hadoop.HBase的一个重要组件.它为分布式应用提供一致性服务的软件,包括:配置维护.域名服务.分布式同步.组服务等. ...

  10. 【SQL】glob 和 like 的区别

    LIKE 和 GLOB 都可以用来匹配通配符指定模式的文本值.如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1 区别: (1)使用的通配符不一样 like:  百分号( ...