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. A1006. Sign In and Sign Out

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...

  2. 【POJ2676】sudoku 搜索

    按照每一行每一列去填数,当填到每一行的第9列时,开始填下一行. 代码如下: #include <cstdio> #include <algorithm> #include &l ...

  3. bzoj2007 NOI2010 海拔(对偶图)

    80分(最小割)思路 先考虑如果没有题目中东南角为\(1\)那个限制的话会怎样. 那么只要让每个点的海拔都是\(0\)就行了.这样不论怎样走,最后的答案都是0. 然后再考虑那个东南角为\(1\)的限制 ...

  4. 第四篇 - 爬取前程无忧python相关工作

    环境:python3    pycharm 模块:requests,xlwt,urllib.request,re 正常三步走: 1.获取源代码 2.匹配源代码,获得目标数据 3.存储到文件中 直接上代 ...

  5. java利用线程池处理集合

    java利用线程池处理集合 2018年07月23日 17:21:19 衍夏成歌 阅读数:866   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/s ...

  6. java的抽象方法

    抽象类所起的功能就像定义模板的功能,子类必须继承抽象类,因此不能用final修饰 http://blog.csdn.net/wei_zhi/article/details/52736350 抽象类的函 ...

  7. rm刷机 root

    http://www.miui.com/download-290.html http://www.miui.com/shuaji-329.html    小米稳定版 不可以root 只有升级到上面的开 ...

  8. UI自动化学习路线

    1.web自动化 1.前端技术介绍 参考网址:http://www.w3school.com.cn/xml/xml_xsl.asp html /html5 js/jquery xml/xpath 参考 ...

  9. (链表 双指针) leetcode 142. Linked List Cycle II

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To r ...

  10. HDU4560 二分最大流

    http://acm.hdu.edu.cn/showproblem.php?pid=4560 网络流好像经常搭配上二分和拆点. n个歌手,m种歌曲流派(n<=m<=75) 我们想要安排尽可 ...