1,数据类型的补充:

  1. 元组()tuple,如果只有元素,并且没有逗号,此元素是什么数据类型,该表达式就是什么数据类型。

    tu = ('rwr')
    print(tu,type(tu))
    tu = ('rwr',)#('rwr',) <class 'tuple'>
    print(tu,type(tu))
  2. list列表,在循环一个列表时,最好不要进行删除动作,一旦删除,索引就会随之改变,容易出错。
    li = ['老男孩','alex','拉黑米','老男孩','老男孩','天上人间']
    #删除索引为奇数的元素
    # del li[1::2]
    # print(li)
    for i in range(len(li)-1,-1,-1):#可以倒序删除
    if i %2== 1:
    del li[i]
    print(li)
    li = ['老男孩','alex','拉黑米','老男孩','老男孩','天上人间']
    ls = []#建一个空列表,先把需要留着的元素加进列表
    for i in range(len(li)):
    if i %2 == 0:
    ls.append(li[i])
    li = ls#再把ls赋值给li
    print(li)
  3. dic的formkeys的操作,存在于同一个内存地址
    # dic= dict.fromkeys([1,2,3],[])
    # print(dic)#{1: [], 2: [], 3: []}
    # dic[2].append('老男孩')
    # print(dic)#{1: ['老男孩'], 2: ['老男孩'], 3: ['老男孩']}
    dic = dict.fromkeys(['w','tt'],['oror','uyu'])
    dic['w'].append('lsn')
    print(dic)#{'w': ['oror', 'uyu', 'lsn'], 'tt': ['oror', 'uyu', 'lsn']}

    dic字典,在循环字典中,不能增加或删除此字典的键值对,容易报错。

    #删除字典中含有k的元素
    dic = {'k1':'value1','k2':'value2','name':'wusir'}
    li = []
    for i in dic:
    if 'k'in i:
    li.append(i)
    for i in li:
    del dic[i]
    print(dic)

    元组直接转化列表:

    s = 'rkrkkr'
    tu = ('skdff')
    s2=list(tu)#直接加list转化
    print(s2,type(s2))

3,set集合数据类型,不重复,无序,不能改,只能查增删,它里面的元素是可哈希,它本身是不可哈希的,集合不能作为字典的键。

主要有两个作用:1,去重。2,数据关系的测试。

li = [11,33,22,22,11,33,11]
set = set(li)
print(set)#取重{33, 11, 22}

4,set 的增

set(add,update)

set ={'那好','ji手机','孩子'}
set.add('好女孩')
print(set)#{'孩子', 'ji手机', '那好', '好女孩'}
set.update([1,233,3])#迭代添加
print(set)#{'孩子', 1, '那好', 3, '好女孩', 233, 'ji手机'

5,删除,remove,pop,clear,del

set ={'那好','ji手机','孩子'}
#set.remove('那好')#按元素删除
set.pop()#随机删除
set.clear()#清空集合
del set #删除集合
print(set)

查看

set ={'那好','ji手机','孩子'}
for i in set:
print(i)

2,关系测试:

交集

set ={'','','',''}
set1 = {'','','',''}
print(set&set1)查看交集
print(set.intersection(set1))交集

并集

set ={'','',''}
set1 = {'','','',''}
print(set|set1)#求并集
print(set.union(set1))#求并集

反交集

set ={'','',''}
set1 = {'','','',''}
print(set^set1)#反交集
print(set.symmetric_difference(set1))#反交集

差集

set ={'','',''}
set1 = {'','','',''}
print(set-set1)#求差集

子集

set1 = {1,2,3}
set2 = {1,2,3,4,5,6} print(set1 < set2)#True
print(set1.issubset(set2))#True # 这两个相同,都是说明set1是set2子集。 print(set2 > set1)#返回True
print(set2.issuperset(set1)) #True 这两个

frozenset不可变集合,让集合变成不可变类型。

s = frozenset('hobby')
print(s)#frozenset({'h', 'b', 'o', 'y'})

深浅copy

1,对于赋值运算指向的是同一个内存地址,字典,列表,集合都一样。

ls = [1,2,3]
ls1 = ls
ls1.append(11)
print(ls,ls1)

copy,不是指向一个内存地址,在内存中开辟了一个内存空间。

对于浅copy来说,第一层创建新的内存地址,而从第二层开始,指向都是同一个内存地址,所以,对于第二层以及更深层数来说,保持一致性。

切片属于浅copy。

l1 = [1,2,3,['barry','alex']]

l2 = l1.copy()
print(l1,id(l1)) # [1, 2, 3, ['barry', 'alex']] 2380296895816
print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2380296895048
l1[1] = 222
print(l1,id(l1)) # [1, 222, 3, ['barry', 'alex']] 2593038941128
print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2593038941896 l1[3][0] = 'wusir'
print(l1,id(l1[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016
print(l2,id(l2[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016

对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。

import copy
l1 = [1,2,3,['barry','alex']]
l2 = copy.deepcopy(l1) print(l1,id(l1)) # [1, 2, 3, ['barry', 'alex']] 2915377167816
print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2915377167048 l1[1] = 222
print(l1,id(l1)) # [1, 222, 3, ['barry', 'alex']] 2915377167816
print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2915377167048 l1[3][0] = 'wusir'
print(l1,id(l1[3])) # [1, 222, 3, ['wusir', 'alex']] 2915377167240
print(l2,id(l2[3])) # [1, 2, 3, ['barry', 'alex']] 2915377167304

对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变

python 的基础 学习 第八天数据类型的补充 ,集合和深浅copy的更多相关文章

  1. Python入门基础学习 三

    Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...

  2. Python入门基础学习 二

    Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...

  3. Python入门基础学习 一

    Python入门基础学习 一 Python下载及安装 下载地址:https://www.python.org/,选择最新的版本下载 稍等一会,安装完成. 简单语句 从idle启动Python:IDLE ...

  4. python基础之数据类型操作补充,集合及其操作,深浅拷贝

    内容概要: 数据类型操作补充 集合及其操作 深浅拷贝1.基础数据类型补充 1.1字符串的操作补充li = ["李嘉诚", "麻花藤", "黄海峰&qu ...

  5. python函数基础学习

    函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定  义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...

  6. Python入门基础学习(函数)

    Python基础学习笔记(三) 函数的概念: 所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用 函数的使用包含两个步骤: 1.定义函数 --封装独立的功能 2.调用函数 --享受 ...

  7. Python入门基础学习(环境安装/字符串)

    Python基础学习笔记(一) 编译性语言与解释性语言: 编译性语言:读完代码再执行,一般会生成一个文件,如C语言会生成一个.h的文件给计算机执行 如:C,C++,C#,Java,Go 解释性语言:读 ...

  8. Python的基础学习(第二周)

    模块初始 sys模块 import sys sys.path #打印环境变量 sys.argv#打印该文件路径 #注意:该文件名字不能跟导入模块名字相同 os模块 import os cmd_res ...

  9. Python入门基础学习(文件与异常处理)

    Python基础学习笔记(七) 捕获异常的语法格式: 文件的基本操作: 打开文件 读.写文件 关闭文件 read方法 --读取文件: open函数的第一个参数是要打开的文件名(文件名区分大小写) 如果 ...

随机推荐

  1. CMakeLists.txt使用

    背景:C++代码在编译的过程中需要进行文件的包含,该文主要介绍CMakeLists.txt相关语法 CMake之CMakeLists.txt编写入门

  2. Cannot read property 'properties' of undefined

    今天运行一个很有意思的项目,报上面的错 根据报错,可以发现,报错出现在项目文件夹下的node_modules\webpack-cli\bin\config-yargs.js文件第89行. 当前webp ...

  3. 美丽的webpack-bundle-analyzer

    webpack-bundle-analyzer -- Webpack 插件和 CLI 实用程序,她可以将打包后的内容束展示为方便交互的直观树状图,让我们知道我们所构建包中真正引入的内容: 我们可以借助 ...

  4. 第十二节,TensorFlow读取数据的几种方法以及队列的使用

    TensorFlow程序读取数据一共有3种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据. 从文件读取数据: 在TensorFlow图的起 ...

  5. Springboot+WebSocket+Kafka(写着玩的)

    闹着玩的来源:前台发送消息,后台接受处理发给kafka,kafka消费者接到消息传给前台显示.联想到websocket. 最终效果如图: 页面解释: 不填写内容的话,表单值默认为Topic.Greet ...

  6. Elastic 开发篇 javaAPI(4)

    1.解决精确匹配问题,如果不加配置,搜索农大,会搜出“农”“大”这两个字的匹配,我们要的是“农大”,那么好了,加上一个条件搞定: MatchQuery.Type.PHRASE 完整代码: packag ...

  7. Haproxy 安装初体验

    20180916 haproxy Haproxy简介 Haproxy是一款免费的.快速的和稳定的解决方案,提供HA和LB功能,同时对基于TCP的应用和HTTP的应用进行代理,对于流量很大的web站点来 ...

  8. 【清北学堂2018-刷题冲刺】Contest 5

     这三个题写了一天半,第一个题写了大概一整天.出题人劝我从后往前写,我不听,结果T1想了+调了一天QWQWQ Task 1:序列 [问题描述]  定义一个"好的序列"为一个长度为M ...

  9. https服务器配置部署

    现在很多网站都要是https,包括我之前做的微信小程序都是需要使用https传输的,特将之前学习的记录下,以防忘记 一. 1.HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL / T ...

  10. Excel:6种多条件查找方法

    如下图所示,要求根据设备分类和品牌来查找相应的销售数量. 1. 使用VLOOKUP+辅助列进行多条件查找 本例采用的方法是在原表的最前面加一辅助列,辅助列的公式为:=B2&C2 然后再采用VL ...