set集合和深浅拷贝

set集合和深浅拷贝

 
集合(set)
    集合,保存大量数据,不可以重复 特点:无序,不可重复,内容可哈希,本身不可哈希
k = frozenset(集合):它就会变成一个可哈希的了
    增:
        s.add(内容)
        s.update("内容"):迭代添加
    删:
        s.pop():随机删除一个,并返回删除的那个内容
        s.remove('指定元素'):删除指定元素,如果不存在会报错
        s.clear():清空集合,如果打印出来空的集合会显示set({})
       修改:
        一般都是删除再添加的
        查:
            用for循环来查询
常用操作:
交集:
print(s1 & s2):返回他们之间相同的元素
s1.intersection(s2)
并集:
print(s1 | s2):返回一个集合,包括他们所有的内容,但是不重复
s1.union(s2): 
 差集
print(s1 - s2)
s1.difference(s2):返回s1去除和s2有相同的内容.如s1{123},s2{3,4,5}返回的是{1,2}
 深浅拷贝
        普通拷贝 s1==s2 ,如果s1改变,s2也会改变
        浅拷贝: 只是对表面的一层可哈希的进行拷贝,拷贝不可哈希的的话只是拷贝内存地址,所以,他们里面的列表还是可变的s2 = s1.copy()
        深拷贝:
                import copy # 引入模块
                ls2 = copy.deepcopy(1s1)
                # 他是把所有东西都深层复制下来,ls1更改不会影响ls2
 


给出一个纯数字列表. 请对列表进行排序(升级题)
.
思路:
1. 完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10
2. 循环列表. 判断a[i]和a[i+1]之间的大小关系, 如果a[i]比a[i+1]大. 则进行互换. 循环结束的时候. 当前列表中最大的数据就会被移动到最右端.
3. 想一想, 如果再次执行一次上面的操作. 最终第二大的数据就移动到了右端. 以此类推. 如果反复的进行执行相应的操作. 那这个列表就变成了一个有序列表
lst = [88,5,8,6,1,23]
for a in range(len(lst)):   # 记录内部排序的次数
i = 0
while i < len(lst) - 1: # 把最大值移动到右端
if lst[i] > lst[i+1]: # 比较,
lst[i], lst[i+1] = lst[i+1], lst[i] # 交换
i = i + 1
print(lst)
 
posted @ 2018-06-14 21:51  赵振宇  阅读(133)  评论(0编辑  收藏  举报