一、集合:类似列表,元组的存储数据容器,不同点是不可修改,不可重复.无序排列.

1.创建集合:

(1).set1 = {'abby', 'eric'}

result:{'eric', 'abby'}

(2).set2 = set({'abby', 'eric'})

result:{'abby', 'eric'}

2.增

set1 = {'abby','eric','allan','davy','skye'}

(1).set1.add('west')

result:{'west','abby','eric','allan','davy','skye'}

(2).set1.update('abc')#迭代新增

result:{'west','abby','a','eric','allan','c','davy','b','skye'}

3.删

set1 = {'abby','eric','allan','davy','skye'}

(1).set1.remove('abby')#指定删除

result:{'eric','allan','davy','skye'}

(2).set1.pop()#随机删除

result:{'abby','eric','allan','skye'}

(3).set clear()#清空集合

result:set()

(4).del set1#从内存删除集合

result:name 'set1' is not defined

4.关系测试:

set1 = {1,2,3,4,5}

set2 = {4,5,6,7,8}

(1).交集:

1:print(set1 & set2)

2:print(set1.intersection(set2)

result:{4,5}

(2).并集

1:print(set1 | set2)

2:print(set1.union(set2)

result:{1, 2, 3, 4, 5, 6, 7, 8}

(3).反交集

1:print(set1 ^ set2)

2:print(set1.symmetric_difference(set2)

result:{1, 2, 3, 6, 7, 8}

(4).差集

1:print(set1 - set2)

2:print(set1.difference(set2)

result:{1, 2, 3}

3.print(set2-set1)

4.print(set2.difference(set1)

result:{8, 6, 7}

(5)子集

set1 = {1,2,3}

set2 = {1,2,3,4,5,6}

print(set1 < set2)

print(set1.issubset(set2))

result:True

(5)超集

print(set2 > set1)

print(set2.issuperset(set1))

result:True

(6)冻结,不可变的数据类型

set1 = {1,2,3}

set3 = frozenset(set1)

result:frozenset({1, 2, 3})

面试题:list去重

l1 = [1,1,2,3,4,4,3,2,1,5,5]

set1 = set(l1)

l2 = list(set1)

print(l2)

二、深浅copy

1. 赋值运算

l1 = [1,2,3]

l2 = l1

l1.append(666)

print(l2)

print(id(l1))

print(id(l2))

result:

[1, 2, 3, 666]

2724735509128

2724735509128

2.浅copy

test01:

l1 = [1,2,3]

l2 = l1.copy()

l1.append(666)

print(l2)

result:[1, 2, 3]

test02:

l1 = [1,2,3,[22,]]

l2 = l1.copy()

l1.append(666)

print(l1,l2)

result:[1, 2, 3, [22], 666] [1, 2, 3, [22]]

test03:

l1 = [1,2,3,[22,]]

l2 = l1.copy()

l1[-1].append('abby')

print(l1,l2)

print(id(l1))

print(id(l2))

print(id(l1[-1]))

print(id(l2[-1]))

result:

[1, 2, 3, [22, 'abby']] [1, 2, 3, [22, 'abby']]
2586054582984
2586055807688
2586054582920
2586054582920

3.深copy

需要copy模块

import copy

l1 = [1,2,3,[22,]]

l2 = copy.deepcopy(l1)

l1.append(666)

print(l2)

result:[1, 2, 3, [22]]

总结深浅copy:都是copy,浅copy复制第一层独立存在,第二层与复制对象共同拥有.深copy复制所有层并且独立存在

面试题:

l1 = [1,2,3,[22,33]]

l2 = l1[:]

l1.append(666)

print(l2)

result:[1, 2, 3, [22, 33]]

总结:切片属于浅copy

三、基础数据补充

1.数据类型的转换

# str ---> list

s1 = 'abby eric west'

l1 = s1.split()

print(l1)

result:['abby', 'eric', 'west']

l1 = ['abby', 'eric', 'west']

s2 = ' '.join(l1)

print(s2)

result:abby eric west

# tuple <---> list

l1 = [1,2,3]

tu1 = tuple(l1)

print(tu1)

result:(1, 2, 3)

tu2 = (0,2,3)

l1 = list(tu2)

print(l1)

result:[0, 2, 3]

# dic ---> list

dic1 = {'name': 'alex', 'age': 1000}

l1 = list(dic1)

print(l1)

result:['name', 'age']

bool转换

0 " [] () {} set() ---> bool: False

四、enumerate枚举

字典用法:

dic01 = {'key1': 'value1','key2': 'value2', 'k3':'v3', 'name': 'abby'}

1.for i in enumerate(dic01,1):#1为索引起始位

  print(i)

result:

(1, 'key1')
(2, 'key2')
(3, 'k3')
(4, 'name')

2.for a,b in enumerate(dic01,1):

  print(a,b)

result:

1 key1
2 key2
3 k3
4 name

列表:li01 = [1,2,3,4,5,6,7,8]

for i in enumerate(li01,1):

  print(i)

result:

(1, 1)
(2, 2)
(3, 3)
(4, 4)
(5, 5)
(6, 6)
(7, 7)
(8, 8)

for a,b in enumerate(li01,1):

  print(a,b)

result:

1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8

python之路(集合,深浅copy,基础数据补充)的更多相关文章

  1. Python基础学习Day7 基础数据类型的扩展 集合 深浅copy

    一.基础数据类型的扩展 1.1GBK ---> UTF - 8 # str --->bytes s1 = '太白' # 字符串是unicode编码 b1 = s1.encode('gbk' ...

  2. python学习笔记三 深浅copy,扩展数据类型(基础篇)

    深浅copy以及赋值 对于字符串和数字而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy n1 = #n1 = 'hahahaha' #赋值n2 = n1#浅co ...

  3. Python 集合 深浅copy

    一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...

  4. python集合深浅copy

    一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...

  5. 003_python的str切片,str常用操作方法,for循环,集合,深浅copy

    基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余  + - * / ** %... 2.bool布尔值 判断真假以及作为条件变量 3.s ...

  6. python之路(三)-深浅拷贝

    深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝指拷贝数据集合的所有层.所 ...

  7. NO.3:自学python之路------集合、文件操作、函数

    引言 本来计划每周完成一篇Python的自学博客,由于上一篇到这一篇遇到了过年.开学等杂事,导致托更到现在.现在又是一个新的学期,春天也越来越近了(冷到感冒).好了,闲话就说这么多.开始本周的自学Py ...

  8. 集合 & 深浅copy

    集合: 特点:集合是可变的数据类型,但他里面的元素必须是不可变的数据类型,无序,不可重复. 创建: set1 = set({1,2,3}) 或者直接创建set2 = {1,2,3} 集合的增删查: 增 ...

  9. python列表中的深浅copy

    列表中的赋值和平常的赋值是不一样的,看下面的代码: In [1]: a = 1 In [2]: b = a In [3]: a Out[3]: 1 In [4]: b Out[4]: 1 In [5] ...

随机推荐

  1. 鸭子类型 - Duck Typing

    还是先看定义 duck typing, 鸭子类型是多态(polymorphism)的一种形式.在这种形式中,不管对象属于哪个, 也不管声明的具体接口是什么,只要对象实现了相应的方法,函数就可以在对象上 ...

  2. tensorboard的简单使用

    1. 首先保证你已有程序,下面是MLP实现手写数字分类模型的代码实现. 不懂的可以对照注释理解. #输入数据是28*28大小的图片,输出为10个类别,隐层大小为300个节点 from tensorfl ...

  3. 后台+下载(wget)+多个下载url

    有时候我们需要让linux下载多个文件,并且后台下载,不去占用当前控制台. 比如我们需要下载中文维基的三个文件: https://dumps.wikimedia.org/zhwiki/latest/z ...

  4. Apache 的多站点配置

    1.修改httpd.conf 文件 Apache的主配置文件路径: D:\phpTools\Apache24\conf 用编辑器打开 httpd.conf 文件,查找 #Include conf/ex ...

  5. 寒假答辩作品——掘地求升C语言版

    寒假答辩—掘地求升(C语言版) 前言 这个是作为寒假答辩作品写的. 之前考虑过用Unity写个游戏,但毕竟不熟悉C#,感觉几乎都是在套模板,而且写着不顺手,有想法却只能 看着C#发呆,很是无奈,所以决 ...

  6. [WPF 自定义控件]自定义一个“传统”的 Validation.ErrorTemplate

    1. 什么是Validaion.ErrorTemplate 数据绑定模型允许您将与您Binding的对象相关联ValidationRules. 如果用户输入的值无效,你可能希望在应用程序 用户界面 ( ...

  7. Android中使用Intent的Action和Data属性实现点击按钮跳转到拨打电话和发送短信

    场景 点击拨打电话按钮,跳转到拨打电话页面 点击发送短信按钮,跳转到发送短信页面 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程 ...

  8. redis 5.0.7 源码阅读——动态字符串sds

    redis中动态字符串sds相关的文件为:sds.h与sds.c 一.数据结构 redis中定义了自己的数据类型"sds",用于描述 char*,与一些数据结构 typedef c ...

  9. MySQL必知必会--分 组 数 据

    数据分组 目前为止的所有计算都是在表的所有数据或匹配特定的 WHERE 子句的 数据上进行的.提示一下,下面的例子返回供应商 1003 提供的产品数目 但如果要返回每个供应商提供的产品数目怎么办?或者 ...

  10. MFC/QT 学习笔记(三)——MFC模板创建

    新建项目->MFC模板->MFC应用程序->应用程序类型:单个文档:项目样式:MFC 标准->下一步...OK 此时点击运行,可直接弹出窗口. 调整 视图->类视图: · ...