python基础-set、各个数据类型转换、深浅拷贝
2017-10-27 13:18
1026 查看
转换
举个列表 字典的转换
x=dict([("x",1),("y",2)]) print(x)
输出如下
{'x': 1, 'y': 2}
set集合
set = {3,"Braay",True,(1,2,4)} print(set) print("---------#集合的增--") set1 = {'alex','wusir','ritian','egon','barry'} set1.add('景女神') print(set1) #update:迭代着增加 set1.update('A') print(set1) set1.update('老师') print(set1) set1.update([1,2,3]) print(set1) print("---------集合的删---") #3,集合的删。 set1 = {'alex','wusir','ritian','egon','barry'} set1.remove('alex') # 删除一个元素 print(set1) set1.pop() # 随机删除一个元素 print(set1) set1.clear() # 清空集合 print(set1) # del set1 # 删除集合 # print(set1) print("############交集#####") set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 & set2) # {4, 5} print(set1.intersection(set2)) # {4, 5} print("############并集#####") set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7} print(set2.union(set1)) # {1, 2, 3, 4, 5, 6, 7} print("############差集。(- 或者 difference)#####") set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 - set2) # {1, 2, 3} print(set1.difference(set2)) # {1, 2, 3} print("###########反交集#####") set1 = {1,2,3,4,5} set2 = {4,5,6,7,8} print(set1 ^ set2) # {1, 2, 3, 6, 7, 8} print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7, 8} print("###########子集与超集#####") set1 = {1,2,3} set2 = {1,2,3,4,5,6} print(set1 < set2) print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。 print(set2 > set1) print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。 print("######frozenset不可变集合,让集合变成不可变类型,没有增加操作#####") s = frozenset('barry') prin` (s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.py {True, 3, 'Braay', (1, 2, 4)} ---------#集合的增-- {'alex', 'barry', '景女神', 'ritian', 'wusir', 'egon'} {'alex', 'A', 'barry', '景女神', 'ritian', 'wusir', 'egon'} {'alex', 'A', 'barry', '老', '景女神', 'ritian', 'wusir', '师', 'egon'} {1, 2, 3, 'alex', 'A', 'barry', '老', '景女神', 'ritian', 'wusir', '师', 'egon'} ---------集合的删--- {'barry', 'ritian', 'wusir', 'egon'} {'ritian', 'wusir', 'egon'} set() ############交集##### {4, 5} {4, 5} ############并集##### {1, 2, 3, 4, 5, 6, 7, 8} {1, 2, 3, 4, 5, 6, 7, 8} ############差集。(- 或者 difference)##### {1, 2, 3} {1, 2, 3} ###########反交集##### {1, 2, 3, 6, 7, 8} {1, 2, 3, 6, 7, 8} ###########子集与超集##### True True True True ######frozenset不可变集合,让集合变成不可变类型,没有增加操作##### frozenset({'b', 'a', 'r', 'y'}) <class 'frozenset'> Process finished with exit code 0
深浅copy
#先看赋值运算。 l1 = [1,2,3,["aa","bb"]] l2 = l1 print(l1) print(l2) l1[0] = 111 print(l1) print(l2) #对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。 l1[3][0] = "wusir" print(l1) print(l2) #浅拷贝copy # 对于浅copy来说,第一层创建的是新的内存地址 # 而从第二层开始,指向的都是同一个内存地址 # 所以,对于第二层以及更深的层数来说,保持一致性 print("---------------------") 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
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/demo.py [1, 2, 3, ['aa', 'bb']] [1, 2, 3, ['aa', 'bb']] [111, 2, 3, ['aa', 'bb']] [111, 2, 3, ['aa', 'bb']] [111, 2, 3, ['wusir', 'bb']] [111, 2, 3, ['wusir', 'bb']] --------------------- [1, 2, 3, ['barry', 'alex']] 44563432 [1, 2, 3, ['barry', 'alex']] 44564112 [1, 222, 3, ['barry', 'alex']] 44563432 [1, 2, 3, ['barry', 'alex']] 44564112 [1, 222, 3, ['wusir', 'alex']] 44563312 [1, 2, 3, ['wusir', 'alex']] 44563312 Process finished with exit code 0
深拷贝
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
E:\python\python_sdk\python.exe E:/python/py_pro/demo.py [1, 2, 3, ['barry', 'alex']] 59473712 [1, 2, 3, ['barry', 'alex']] 59548256 [1, 222, 3, ['barry', 'alex']] 59473712 [1, 2, 3, ['barry', 'alex']] 59548256 [1, 222, 3, ['wusir', 'alex']] 59473472 [1, 2, 3, ['barry', 'alex']] 59548216 Process finished with exit code 0
对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
相关文章推荐
- Python全栈开发之3、数据类型set补充、深浅拷贝与函数
- Python基础数据类型-列表(list)和元组(tuple)和集合(set)
- Python基础,基本类型(整型,浮点数等)数据结构(List,dic(Map),Set,Tuple),控制语句(if,for,while,continue or break):来自学习资料
- python基础学习第四课,条件判断语句,数据类型转换
- python基础知识积累(一)数据类型转换
- python 基础-----数字,字符串,if while 循环 数据类型的转换简单介绍
- Python【基础:数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set】注意事项(与java,c比较)
- Python基础 -- 01 Python的基础语法(数据类型、输入输出、运算符、数据类型转换、判断语句、循环语句)
- Python知识点(1)python基础 强制数据类型转换 小总结
- python基础数据结构——列表(list), 元祖(tuple), 字典(dict), 字符串(string), 集合(set) 介绍及相互转换
- python自动化--语言基础一数据类型及类型转换
- Python基础2(内置数据类型及转换)
- Python基础数据结构之数据转换(Dict,Set,Tuple,List)
- python基础-数据类型转换、字符串
- Python3学习(一)-基础、数据类型、变量、字符串和编码、list&tuple、if、for、while、dict、set、函数与参数
- 浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
- python基础---数据类型之间的转换
- python基础系列(三)---set、collection、深浅拷贝
- 在Python中数据类型转换的注意事项
- Xman整理篇___关于Python的基础内容(变量和简单数据类型)