python学习 day6 (3月7日)
#__author : 'liuyang'
#date : 2019/3/7 0007
a = ['a' , 'b' , 'c']
b = []
print(a is b ) # 空元组 可以 空列表 不可以
print(tuple(a))
题目:
l1 = [11, 22, 33, 44, 55]
#将此列表索引为奇数的对应元素全部删除
# 错误示例
for l in range(len(l1)):
print(l)
if l % 2==1:
#l1.pop(l) # 等同余下 一个是括号 一个是中括号
del l1[l]
print(l1) # l1 = [11, 22, 33, 44, 55]
# del l1[1::2]
# print(l1)
dic = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'name': 'alex'}
lis = []
# 循环一个字典时,不能改变 字典的大小,否则会报错 for key in dic.keys():
# if 'k' in key:
# del dic[key] print(key)
if 'k' in key:
# dic.pop(key)
lis.append(key)
# for li in lis:
# del dic[li]
# 在后面 删除
for li in lis:
del dic[li] print(dic)
同一类型
小数据池: 理解
id == is 两者之间的id是否相同 (is 判断内存地址是否一样)(==判断值是否一样)
同一内存地址
获取该对象的内存地址
代码块:
一个文件;
交互式命令:一行代码
同一个代码块下:字符串的缓存机制,驻留机制:
背景:同一代码块下,遇到初始化对象命令,会实现检查字典是否有此对应关系.......
针对的数据类型:int(float) , 大量的str , bool ,(), None
None--------空列表空元组 空字符 统一指向这个内存地址
优点:
节省内存
提高执行性能
小数据池:
不同代码块
在内存中,开辟两个空间.
一个空间:-5~256
一个空间:一定规则的字符串
<20 个位 >-1
针对的数据类型:int str , bool ,(), None
优点:
节省内存
提高执行性能
# 超出范围了

数据类型的补充:
int str bool lis tuple dict set
(1)-------->int (1,)------------->tuple
int str bool 包起来
other ------------> bool
0 '' () [] {} ------> False
list <----> tuple 包起来
list、tuple ------> str sploit
str ---------------> list、tuple ' ',join(str)
用三种方式创建一个字典:
dic ={'name' : 'liuer'}

(2)-----> {1:2, 'name':alex}
(3)-----> {1:alex , 2:alex , 3:alex}
数据类型的补充
(1,)
fromkeys([1,2,3] , [])
循环一个列表 循环一个字典时 ,不能改变他们的大小,否则会报错
明天 : 编码进阶 文件操作 深浅copy
str(dict) --------> {}
inpre () '{}' #程序员用
print() # 美化了
回顾:字典特点:
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可以互相转换.
浅 copy 只 copy 第一层元素 :
l1 = [1,2,3,[1,2]]
l2 = l1.copy()
改变列表里的列表(第二层)都变 改变列表里的数字 不变
深 copy
l1 = [1,2,3,[1,2]]
l2 = l1.deepcopy()
改变列表里的列表 不变
不可变得 变化 改值 开辟新的内存空间 ?
python学习 day6 (3月7日)的更多相关文章
- Python 学习日志9月20日
9月20日 周三 多大年龄了,还活得像个小孩.——急什么,人生又不长. 你习惯了思考宇宙星辰,一百年真的不长,一生也就不那么长,许多人的价值观念你也就无法理解.同样,许多人也无法理解你的价值观念,感兴 ...
- Python 学习日志9月19日
9月19日 周二 今天是普通的一天,昨天也是普通的一天,刚才我差点忘记写日志,突然想起来有个事情没做,回来写. 今天早晨学习<Head First HTML and CSS>第十一章节“布 ...
- Python学习日志9月17日 一周总结
周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...
- Python 学习日志9月21日
9月21日 周四 今天是个特殊的日子吗,总感觉9月21这个日子听着怪怪的. 今天早晨看<Head First HTML and CSS>第13章节“表格和更多列表”,内容不多,看完并做了详 ...
- Python学习日志9月13日
昨天的学习日志没有写,乱忙了一整天,政治电脑. 好奇心重,想要给电脑装上传说中LInux操作系统,各种小问题折腾到半夜,今天又折腾到晚上才真正的装上系统. 可是装上系统后又发现各种的不好用.虽然界面比 ...
- Python学习日志9月16日
刚才我差点睡着了,差资料的时候太费神,有些累. 今天早晨学习了<head first HTML and CSS>,今天把昨天没看了的关于字体和颜色的一章节看完了,真长.我详细的做了笔记,并 ...
- python学习 day19 (3月26日)----(对象组合)
深谙:非常透彻地了解:熟悉内中情形.谙,读作‘ān’ 熟悉. 1.面向对象作用:规划了代码中的函数处理的是哪一类问题 解决了传参的问题 方便扩展 方便重用 2.类的定义和使用类当中有哪些成员 ''' ...
- Python学习日志9月15日
一周就要过去了,而我跟一周以前没什么区别.回想一下,我这周做了什么事情呢.恍然若失.这周的精力都浪费在很多不必要的事情上了.学过一片古文,讲后羿学射箭,他有一个同学跟他一样聪明,在一起学习.后羿呢,专 ...
- Python学习日志9月14日
今天早晨又没有专心致志的学习,我感觉我可能是累了,需要减轻学习的程度来调整一下咯.这几天装电脑弄的昏天暗地的,身体有点吃不消了.时间真是神奇的魔法,这半个月来,每隔几天都有想要改变策略的想法.今天早晨 ...
随机推荐
- leetcode 中等题(1)
2. Add Two Numbers(中等) /** * Definition for singly-linked list. * struct ListNode { * int val; * Lis ...
- jquery is()和has()方法
1. is() :判断当前节点是否是否匹配选择器.返回布尔值: 2. has():判断当前节点是否包含选择器中的子元素,返回包含固定子元素的父元素(jquery对象) 用法:可用于判断父元素中是否包含 ...
- crm作业知识点集合[三]
知识点1 我们要实现一个这样的功能,在学生表中,可以查看每个学生的报名的班级的所有的成绩,就是下图的效果 1.首先我们需要在学生表中自定义一列,这一列的内容就是一个a标签,指向另外一个页面,而我们在另 ...
- 细说GIT分布式版本控制器
一.Git介绍 Git是目前世界上最先进的分布式版本控制器.Svn CVS 版本控制器:就是用来追溯自己书写的代码的记录信息.好处:可以非常方便的记录何时何地何人操作了哪些代码. 什么是分布式版本控制 ...
- 31-java中知识总结:list, set, map, stack, queue
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Lin ...
- Beanstalkd消息队列的安装与使用
一.Beanstalkd是什么? Beanstalkd是一个高性能,轻量级的分布式内存队列 二.Beanstalkd特性 1.支持优先级(支持任务插队)2.延迟(实现定时任务)3.持久化(定时把内存中 ...
- rbac 权限分配, 基于formset实现,批量增加
这里需要两个知识点: - formset - 自动发现项目中的URL1. 什么是formset: Django中 form组件 或 ModelForm组件,用于做一个表单的验证. 接收前端form表单 ...
- Socket(转自 阿里云)
摘要:Socket-C/S Socket又称"套接字",应用程序 通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. ...
- Linux yum源完全配置
一.简介 yum主要功能是更方便的添加/删除/更新RPM包,自动解决包的依赖性问题,便于管理大量系统的更新问题,其理念是使用一个中心仓库(repository)管理一部分甚至一个distributio ...
- (转)system.badimageformatexception 未能加载文件或程序集
“/xxxxx”应用程序中的服务器错误. ------------------------------------------------------------------------------- ...