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()

改变列表里的列表 不变 

不可变得 变化 改值 开辟新的内存空间 ?

转载于:https://www.cnblogs.com/Doner/p/10488861.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java jni helloword_JNI入门教程之HelloWorld篇

JNI入门教程之HelloWorld篇来源:互联网 宽屏版 评论2008-05-31 09:07:11本文讲述如何使用JNI技术实现HelloWorld&#xff0c;目的是让读者熟悉JNI的机制并编写第一个HelloWorld程序。java Native Interface(JNI)是Java语言的本地编程接口&#xff0c;是J2SDK的一部分。在java…

select多查询,自连接,join 等

题目来源于leetcode中的数据库部分&#xff1a;181. Employees Earning More Than Their Managers 题目&#xff1a;The Employee table holds all employees including their managers. Every employee has an Id, and there is also a column for the manager Id. ----------…

有时候eclipse 导入maven项目 启动的时候回出现这样一个问题

严重: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMvcController]]at java.util.conc…

公众平台模板消息所在行业_第三方工具微信公众号模板消息群发如何操作?

当下&#xff0c;公众平台模板消息功能仅支持添加模板&#xff0c;修改所在行业&#xff0c;如果想要群发模板消息&#xff0c;可以自己根据公众平台的接口编程实现&#xff0c;也可通过微号帮平台的模板消息群发功能实现&#xff0c;均可以让微信公众号群发模板消息&#xff0…

在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试

在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试 原文:在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试版权声明&#xff1a;本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布&#xff0c;但务必保留文章署名…

java 通道 双向原理_Java-NIO(四):通道(Channel)的原理与获取

通道(Channel)&#xff1a;由java.nio.channels包定义的&#xff0c;Channel表示IO源与目标打开的连接&#xff0c;Channel类似于传统的“流”&#xff0c;只不过Channel本身不能直接访问数据&#xff0c;Channel只能与Buffer进行交互。通道主要用于传输数据&#xff0c;从缓冲…

访问权限冲突定义_一文读懂F5 REST API的细粒度角色访问控制

↑ 点击上方“小咩社长”关注我阅读提示&#xff5c;本文大概4718字 阅读需要12分钟写在前面&#xff1a;前两天一个保险的客户联系我说有个需求&#xff0c;问通过调用F5 REST API可否实现&#xff1f;&#xff1a;需要把F5负载均衡上面的配置相关的信息&#xff0c;包含每个…

python财经数据接口包Tushare pro的入门及简单使用方式(大数据,股票数据接口)...

最近在做一个项目&#xff0c;需要用到股票的数据&#xff0c;我在网上查了很久&#xff0c;最终发现在股票数据上面还是tushare比较专业&#xff0c;而且对于将来做金融行业的大数据这一块的&#xff0c;tushare绝对是你的一个好帮手&#xff0c;所以下面我就简单介绍一下。 一…

java ean13 条形码_【教程】Spire.Barcode 教程:如何在C#中创建EAN-13条码

基于UPC-A标准的EAN-13在世界范围内用于标记零售商品。 13位EAN-13号码由四部分组成&#xff1a;国家代码 - 2或3位数字制造商代码 - 5至7位数字产品代码 - 3至5位数字检查数字 - 最后一位数字代码演示&#xff1a;Step 1: 创建一个BarcodeSettings实例。BarcodeSettings setti…

Java调试器–权威的工具列表

Java调试是一个复杂的空间。 调试器的类型很多&#xff0c;并且有很多工具可供选择。 在此页面中&#xff0c;我们将介绍7种类型的调试器之间的区别&#xff0c;并查看每个类别中的主要工具&#xff0c;以帮助您为正确的工作选择正确的工具。 以下是我们涵盖的调试器类型&…

java项目中多个定时器_在java项目中如何使用Timer定时器

在java项目中如何使用Timer定时器发布时间&#xff1a;2020-11-16 16:36:16来源&#xff1a;亿速云阅读&#xff1a;97作者&#xff1a;Leah在java项目中如何使用Timer定时器&#xff1f;很多新手对此不是很清楚&#xff0c;为了帮助大家解决这个难题&#xff0c;下面小编将为大…

慎使用sql的enum字段类型

在sql的优化中&#xff0c;会有同学提到一点&#xff1a;使用enum字段类型&#xff0c;代替其他tinyint等类型。以前这也是不少人喜欢优化的&#xff0c;但是现在细想&#xff0c;是非常不合理的。 优点&#xff1a; 1.可以设置区间范围&#xff0c;比如设置性别&#xff1a;1男…

区分基于Ant目标的Gradle任务

在我的博客文章《 从Ant Build演变Gradle构建&#xff1a;导入Ant构建文件》中 &#xff0c;我演示了如何使用Gradle内置的基于AntBuilder的Ant支持在Gradle构建中导入Ant目标。 然后&#xff0c;可以将这些Ant目标作为Gradle任务进行访问&#xff0c;并与Gradle构建直接引入的…

关于类的使用的几个关键

类的定义和声明必须放在main函数前 如果类中只有申明类而没有定义&#xff0c;则只能定义指针&#xff1a;Test *test&#xff1b;如果不定义类而仅仅声明类的话&#xff0c;当使用Test test时&#xff0c;编译器只知道Test是个class&#xff0c;但留多大空间&#xff1f;怎么初…

java判断对象已死_Java的JVM判断对象已死的基本算法分析

jvm中有各种的垃圾收集器&#xff0c;每个收集器都有各自的算法。但是一切的根本都需要找到找到应该被消除的对象&#xff0c;理解如何找到死亡对象才是理解垃圾收集器的基础。01两个基本算法a、引用记数法&#xff1a;对象中加一个引用计数器&#xff0c;每次被引用计数器加一…

java开发 职业技能_java编程开发程序员需要具备哪些职业技能

随着互联网的不断发展&#xff0c;java编程开发可以说是目前学习人数和应用范围非常多的一种编程语言了&#xff0c;而今天我们就一起来了解一下&#xff0c;java编程开发程序员需要具备哪些职业技能。1、数据结构和算法分析数据结构和算法分析&#xff0c;对于一名程序员来说&…

Django model转字典的几种方法

平常的开发过程中不免遇到需要把model转成字典的需求&#xff0c;尤其是现在流行前后端分离架构&#xff0c;Json格式几乎成了前后端之间数据交换的标准&#xff0c;这种model转dict的需求就更多了&#xff0c;本文介绍几种日常使用的方法以供参考&#xff0c;所有例子均基于Dj…

微信小程序日历课表

最近项目中使用到了日历&#xff0c;在网上找了一些参考&#xff0c;自己改改,先看效果图 wxml <view class"date"><image class"direction" src"/images/icon/left.png" bindtapminusMouth/><label>{{year}}年{{mouth}}月<…

java并发数据共享机制_Java并发编程:核心理论之数据共享性

原标题&#xff1a;Java并发编程&#xff1a;核心理论之数据共享性并发编程是Java程序员最重要的技能之一&#xff0c;也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解&#xff0c;同时要求编程者逻辑清晰、思维缜密&#xff0c;这样才能写出高效、…

测试集准确率不变_这个医疗AI准确率突破天际,招来了铺天盖地的质疑

转自 | 量子位只要输入一次心跳的波谱。就能判断一个人有没有发生心力衰竭 (CHF) &#xff0c;准确率100%。这是英国华威大学领衔的团队&#xff0c;用机器学习方法做出的新成果。还登上了影响因子2.943的Biomedical Signal Processing and Control期刊。准确率眼看就要突破天际…