2016.07.17-18 集合方法

集合(set):
    特性:
        1.集合的元素都是唯一的。
        2.集合是无序的(非线性序列)。
    set的定义(初始化):
        s = set()
        s = {1, 2, 3}

    增加元素:添加的元素必须是可hash的,list、set、bytearray、dict是不可hash的,所以不能作为set的元素,通常来说内置类型不能变的都是可hash的。
        add方法:添加一个元素到集合,如果该元素在集合已经存在,集合不会发生任何改变(集合的元素都是唯一的)。
        add(...)
            Add an element to a set.
            This has no effect if the element is already present.
            >>> s = {1, 2, 3}
            >>> s.add(4)
            >>> s
            {1, 2, 3, 4}
            >>> s.add(2)
            >>> s
            {1, 2, 3, 4}

        update方法:将一个可迭代对象更新到集合。
        update(...)
            Update a set with the union of itself and others.
            >>> s
            {1, 2, 3, 4}
            >>> s.update({4, 5, 6})
            >>> s
            {1, 2, 3, 4, 5, 6}
            >>> s.update([1, 22 ,11])
            >>> s
            {1, 2, 3, 4, 5, 6, 22, 11}
            >>> s.update(‘python‘)
            >>> s
            {1, 2, 3, 4, 5, 6, 11, 22, ‘h‘, ‘n‘, ‘y‘, ‘p‘, ‘o‘, ‘t‘}
            >>> s.update({‘a‘:1, ‘b‘:2})
            >>> s
            {1, 2, 3, 4, 5, 6, ‘b‘, 11, 22, ‘a‘, ‘h‘, ‘n‘, ‘y‘, ‘p‘, ‘o‘, ‘t‘} #update字典时只会添加字典的key到集合。
            >>>
    删除元素:
        remove方法:删除集合的一个元素,如果该元素不存在,则抛出一个KeyError异常。
        remove(...)
            Remove an element from a set; it must be a member.
            If the element is not a member, raise a KeyError.
            >>> s
            {1, 2, 3, 4, 5, 6, ‘b‘, 11, 22, ‘a‘, ‘h‘, ‘n‘, ‘y‘, ‘p‘, ‘o‘, ‘t‘}
            >>> s.remove(1)
            >>> s
            {2, 3, 4, 5, 6, ‘b‘, 11, 22, ‘a‘, ‘h‘, ‘n‘, ‘y‘, ‘p‘, ‘o‘, ‘t‘}
            >>> s.remove(100)
            Traceback (most recent call last):
              File "<stdin>", line 1, in <module>
            KeyError: 100
            >>>
        discard方法:删除集合的一个元素,如果该元素不存在,则什么都不做。
        discard(...)
            Remove an element from a set if it is a member.
            If the element is not a member, do nothing.
            >>> s
            {2, 3, 4, 5, 6, ‘b‘, 11, 22, ‘a‘, ‘h‘, ‘n‘, ‘y‘, ‘p‘, ‘o‘, ‘t‘}
            >>> s.discard(2)
            >>> s
            {3, 4, 5, 6, ‘b‘, 11, 22, ‘a‘, ‘h‘, ‘n‘, ‘y‘, ‘p‘, ‘o‘, ‘t‘}
            >>> s.discard(200)
            >>>
        pop方法:随机删除集合的一个元素,并返回该元素,如果集合为空则抛出一个KeyError异常。
        pop(...)
            Remove and return an arbitrary set element.
            Raises KeyError if the set is empty.
            >>> s
            {1, 2, 3}
            >>> s.pop()
            1
            >>> s.pop()
            2
            >>> s.pop()
            3
            >>> s.pop()
            Traceback (most recent call last):
              File "<stdin>", line 1, in <module>
            KeyError: ‘pop from an empty set‘
            >>>
        clear方法:删除集合的所有元素。
        clear(...)
            Remove all elements from this set.
            >>> s
            {1, 2, 3}
            >>> s.clear()
            >>> s
            set()
            >>>
    修改元素和查找元素:
        没有任何方法可以直接修改和查找集合中的某个具体元素,因为集合是无序的,所以没有任何方法能够定位到集合某个元素的位置。

    访问方法:
        集合是可迭代对象,可以使用成员运算符(in、 not in)
        可以使用for in的方式访问集合
        线性结构的成员运算,时间复杂度是O(n),集合的成员运算,时间复杂度是O(1)

    额外拓展:时间复杂度
        效率排列:
        O(1)        常数复杂度
        O(logn)        对数复杂度
        O(n)        线性复杂度
        O(n^2)        平方复杂度
        O(n^3)
        O(2^n)        指数复杂度
        O(n!)        阶乘复杂度
时间: 2025-01-02 19:19:04

2016.07.17-18 集合方法的相关文章

2016 07 17所学

一.修改phpStudy网站目录(WWW目录)的方法 1.在phpStudy里直接修改 点击应用后重启. 另外,端口也可以在这里更改. 2.在配置文件里修改 找到apache文件夹下conf文件夹里的httpd.conf文件,修改以下地方(注:Allow from all这点是修改成这样.而路径是未修改的.个别自带的就是Allow from all那么就不用改[比如我自己~~]) 另外两个路径都修改成自己新建的文件. 二.修改端口 1.直接在phpStudy界面上修改,如上图所示. 2.在Apa

【谜客帝国】第79届阳钧天歌主擂谜会(2016.07.07)

[谜客帝国]第79届阳钧天歌主擂谜会(2016.07.07) 主持:瓷   计分:手手 1.主动携手,昂首去西川(形容词)压抑 2.门客先到,必须蛙跳(称谓)闺蜜 3.不死的摇钱树(3字鲁迅小说人名)金永生 4.高手移居西城,她也去比试(称谓)老尼姑 5.遗容依旧(7字俗语)面不改色心不跳 6.缺少的缘故(名词,徐妃格)炊烟 7.未有好处(形容词,徐妃格)洋溢 8.山里飞花,坟前寒烛(人体特征)老茧 9.灾后工作模式,重新合作来依靠(旧物品)烟袋 10.守备送出关,吕布驰去也(象棋术语)过宫马

2016/07/11 PHP接口的介绍与实现

接口定义了实现某种服务的一般规范,声明了所需的函数和常量,但不指定如何实现.之所以不给出实现的细节,是因为不同的实体可能需要用不同的方式来实现公共的方法定义.关键是要建立必须实现的一组一般原则,只有满足了这些原则才能说实现了这个接口. 接口中不定义类成员!类成员的定义完全交给实现类来完成. 先来看一个简单的例子,有个全面的认识: 01 <?php 02 interface Fruit 03 { 04     const MAX_WEIGHT = 5;   //此处不用声明,就是一个静态常量 05

Java(18) 集合框架

一.集合框架 Collectoin                   Map List           set              HashMap ArrayList LinkedList  HashSet 1.1 List的方法 List<元素> list = new ArrayList<元素类型>() list.add(元素);//增加元素 list.add(元素);//向指定位置插入元素 list.remove(元素);//删除指定小标的元素 list.remov

2017.04.13-2017.07.17

QQ:577007217 今日更新: 2017.07.17 Geomagic Freeform 2017.0.93 Win64 1DVD Geomagic Freeform Plus 2017.0.93 Win64 1DVD Geomagic Sculpt 2017.0.93 Win64 1DVD InnovMetric.PolyWorks.2017.IR3.Win32_64 2DVD Mentor Graphics FloTHERM XT 3.1 Win64 1DVD PolyBoard Pr

张珺 2015/07/17 个人文档

姓名 张珺 日期 信息楼南406,中蓝公寓蓝芳园D507,2015/07/17 主要工作及心得 今天,我们先去找老师对程序进行了检查,并讨论了关于报告编写的问题.针对老师指出的问题,以及老师提出的意见.建议,我们在回来后对程序进行了修改.我主要负责对程序界面中中文显示及界面标题的问题进行修改.此外,我继续进行了报告的编写工作 遇到的问题 界面显示.提示信息中缺乏中文信息 解决方法 按照老师要求修改界面和对话框

ACM-南京理工大学第八届程序设计竞赛-网络赛(2016.04.17)

A.偷吃糖果Time Limit: 1000Ms Memory Limit: 65536KB Description小鱼喜欢吃糖果.他有两盒糖果,两盒糖果分别仅由小写字母组成的字符串s和字符串t构成.其中'a'到'z'表示具体的某种糖果类别.他原本打算送给他喜欢的女生,但是要送给女孩子的话两盒糖果不能有差别(即字符串s和t完全相同).所以,他决定偷吃几块,他吃糖果的策略是每次选出一盒糖果中两个连续的同种类别的糖果,然后吃掉其中一块.该策略可以使用多次.例如一盒糖果是'rrrjj',他可以把这盒糖

2016.6.17——Valid Parentheses

Valid Parentheses 本题收获: 1.stack的使用 2.string和char的区别 题目: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}&qu

HDU 1528 (二分图最大匹配 + 最小覆盖, 14.07.17)

Problem Description Adam and Eve play a card game using a regular deck of 52 cards. The rules are simple. The players sit on opposite sides of a table, facing each other. Each player gets k cards from the deck and, after looking at them, places the c

Oracle中把一个DateTime的字符串转化成date类型。to_date(&#39;2016/12/8 18:55:43&#39;,&#39;yyyy/MM/dd hh24:mi:ss&#39;),

Oracle中把一个DateTime或者该形态字符串转化成date类型. to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'), 或者: select to_date('2010-10-20 13:23:44','yyyy-mm-dd hh24:mi:ss')  from dual; 是用" /"还是" -"取决于字符串是什么结构的. date类型转换成char类型, 例子to_char(' ','yyyymmd