zoukankan      html  css  js  c++  java
  • 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)
     
  • 相关阅读:
    Liskov替换原则
    OCP开放封闭原则
    SRC单一职责原则
    什么是敏捷设计
    [WCF编程]13.并发:服务并发模式
    [WCF编程]12.事务:服务事务编程(下)
    [WCF编程]12.事务:服务事务编程(上)
    [WCF编程]12.事务:Transaction类
    [WCF编程]12.事务:事务传播
    [WCF编程]12.事务:事务协议与管理器
  • 原文地址:https://www.cnblogs.com/123zzy/p/9185125.html
Copyright © 2011-2022 走看看