#__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日)的更多相关文章

  1. Python 学习日志9月20日

    9月20日 周三 多大年龄了,还活得像个小孩.——急什么,人生又不长. 你习惯了思考宇宙星辰,一百年真的不长,一生也就不那么长,许多人的价值观念你也就无法理解.同样,许多人也无法理解你的价值观念,感兴 ...

  2. Python 学习日志9月19日

    9月19日 周二 今天是普通的一天,昨天也是普通的一天,刚才我差点忘记写日志,突然想起来有个事情没做,回来写. 今天早晨学习<Head First HTML and CSS>第十一章节“布 ...

  3. Python学习日志9月17日 一周总结

    周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...

  4. Python 学习日志9月21日

    9月21日 周四 今天是个特殊的日子吗,总感觉9月21这个日子听着怪怪的. 今天早晨看<Head First HTML and CSS>第13章节“表格和更多列表”,内容不多,看完并做了详 ...

  5. Python学习日志9月13日

    昨天的学习日志没有写,乱忙了一整天,政治电脑. 好奇心重,想要给电脑装上传说中LInux操作系统,各种小问题折腾到半夜,今天又折腾到晚上才真正的装上系统. 可是装上系统后又发现各种的不好用.虽然界面比 ...

  6. Python学习日志9月16日

    刚才我差点睡着了,差资料的时候太费神,有些累. 今天早晨学习了<head first HTML and CSS>,今天把昨天没看了的关于字体和颜色的一章节看完了,真长.我详细的做了笔记,并 ...

  7. python学习 day19 (3月26日)----(对象组合)

    深谙:非常透彻地了解:熟悉内中情形.谙,读作‘ān’ 熟悉. 1.面向对象作用:规划了代码中的函数处理的是哪一类问题 解决了传参的问题 方便扩展 方便重用 2.类的定义和使用类当中有哪些成员 ''' ...

  8. Python学习日志9月15日

    一周就要过去了,而我跟一周以前没什么区别.回想一下,我这周做了什么事情呢.恍然若失.这周的精力都浪费在很多不必要的事情上了.学过一片古文,讲后羿学射箭,他有一个同学跟他一样聪明,在一起学习.后羿呢,专 ...

  9. Python学习日志9月14日

    今天早晨又没有专心致志的学习,我感觉我可能是累了,需要减轻学习的程度来调整一下咯.这几天装电脑弄的昏天暗地的,身体有点吃不消了.时间真是神奇的魔法,这半个月来,每隔几天都有想要改变策略的想法.今天早晨 ...

随机推荐

  1. Trigger,Cursor

    USE [Demo]GO /****** Object: StoredProcedure [dbo].[p_couser_Student] Script Date: 02/24/2014 20:43: ...

  2. Angular之特性模块 ( Feature Module )

    项目结构 一 创建特性模块,及其包含的组件.服务. ng g module art ng g component art/music ng g component art/dance ng g ser ...

  3. zabbix基础使用(以思科交换机为例)

    1.创建host group --以方便添加告警和给host分组 一般先创建一个Group-Net,然后根据地点创建.命名,如Group-Net-BeiJing 2.创建Template 1.创建Di ...

  4. Java_4.1 猜数字游戏

    猜数字游戏: 系统随机产生一个1-100之间的数字,用户输入一个数字,如果用户输入的数字和随机数一样,输出“恭喜,猜对了”:如果猜大了,输出“猜大了”:如果猜小了,就输出“猜小了”. 循环直到用户输入 ...

  5. AngularJS——第1章 简介

    第1章 简介 由谷歌公司开发维护的前端MVC框架,克服了HTML在构建应用上的诸多不足,降低了开发成本,提高了效率. 一个框架 以数据和逻辑作为驱动 AngularJS核心特性:模块化,双数据绑定,语 ...

  6. mysql怎么查看是否支持分区

    mysql从5.1开始支持分区功能 查询命令如下: mysql> show plugins like '%partiotion%'; mysql> show variables like ...

  7. CALL transaction 的用法-传内表

    使用memory (这个方法和第二种方式的区别是可以传输复选框的值) data:  wfbomcom type rc29n.  move-corresponding bom_key to wfbomc ...

  8. go语言io和ioutil包的学习和使用

    io包 package main; import ( "errors" "fmt" "io" ) //io包中定义了非常多的interfac ...

  9. Linux驱动之建立一个hello模块

    目标:在开发板上执行insmod hello.ko能在控制台打印出hello init:接着执行rmmod会在控制台打印出hello exit 建立一个hello模块的步骤如下: 1.建立一个hell ...

  10. 8Q - 献给杭电五十周年校庆的礼物

    我不能参赛,就送给学校一个DOOM III球形大蛋糕吧.等一等,吃蛋糕之前先考大家一个问题:如果校长大人在蛋糕上切了N刀(校长刀法极好,每一刀都是一个绝对的平面),最多可以把这个球形蛋糕切成几块呢?  ...