python中的几个主要数据结构的使用方法

python列表函数&方法

Python包含以下函数:

  • len(list):列表元素个数

  • max(list):返回列表元素最大值

  • min(list):返回列表元素最小值

  • list(seq):将元组转换为列表

Python包含以下方法:

  • list.count(obj):统计某个元素在列表中出现的次数

  • list.index(obj):从列表中找出某个值第一个匹配项的索引位置

  • list.append(obj):在列表末尾添加新的对象

  • list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    :字典中对应的类似功能由update(dict)方法承担实现

  • list.insert(index, obj):将对象插入列表
    :C++也是insert,Java是add

  • list.pop([index=-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

  • list.remove(obj):移除列表中某个值的第一个匹配项

  • list.reverse():反向列表中元素

  • list.sort( key=None, reverse=False):对原列表进行排序

  • list.clear():清空列表

  • list.copy():复制列表,list.copy()浅拷贝,如果需要进行深拷贝,则需要这样做:

    import copy
    a = copy.deepcopy(lst)
    

python集合内置方法完整列表

  • add():用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作

  • update():用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。

  • pop():用于随机移除一个元素,并返回移除的元素这个方法没有参数

  • set.remove(item):用于移除集合中的指定元素,该方法不同于 discard() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而discard() 方法不会。这个方法没有返回值

  • set.discard(value):用于移除指定的集合元素。该方法不同于 remove() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。该方法返回值无

  • clear():移除清空集合中的所有元素

  • copy():拷贝一个集合

  • difference():用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中。
    :我们也可以使用 - 运算符

  • difference_update():移除集合中的元素,该元素在指定的集合也存在。
    :difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值

  • intersection():set.intersection(set1, set2 ... etc),用于返回两个或更多集合中都包含的元素,即交集。
    :也可以使用 & 运算符

  • intersection_update():用于获取两个或更多集合中都重叠的元素,即计算交集。
    :intersection_update() 方法不同于 intersection() 方法,因为 intersection() 方法是返回一个新的集合,而 intersection_update() 方法是在原始的集合上移除不重叠的元素

  • union():返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次。
    :我们也可以使用 | 运算符

  • symmetric_difference():返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素。
    :我们也可以使用 ^ 运算符

  • symmetric_difference_update():移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

  • issubset():判断指定集合是否为该方法参数集合的子集

  • issuperset():判断指定集合是否为该方法参数集合的父集

  • isdisjoint():判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
    :disjoint,不相交的,这个方法的意义是判断两个集合是否相交,如果不相交,则返回True;否则返回False.

python字典内置函数&方法

Python字典包含了以下内置函数

  • len(dict):计算字典元素个数,即键的总数。

    >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    >>> len(dict)
    3
    
  • str(dict):输出字典,可以打印的字符串表示。

    >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    >>> str(dict)
    "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
    
  • type(variable):返回输入的变量类型,如果变量是字典就返回字典类型。

    >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    >>> type(dict)
    <class 'dict'>
    

Python字典包含了以下内置方法

  • dict.clear():用于删除字典内所有元素,该方法没有任何返回值

  • dict.copy():返回一个字典的浅复制,返回值为一个字典的浅复制。

  • dict.fromkeys(seq[, value]):用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。其中 value 为可选参数, 设置键序列(seq)对应的值,默认为 None

    #!/usr/bin/python3
    
    seq = ('name', 'age', 'sex')
    
    dict = dict.fromkeys(seq)
    print ("新的字典为 : %s" %  str(dict))
    
    dict = dict.fromkeys(seq, 10)
    print ("新的字典为 : %s" %  str(dict))
    
    新的字典为 : {'age': None, 'name': None, 'sex': None}
    新的字典为 : {'age': 10, 'name': 10, 'sex': 10}
    
  • key in dict:如果键在字典dict里返回true,否则返回false

  • dict.keys():返回字典键的一个视图对象

  • dict.values():返回字典值的一个视图对象

  • dict.items():以列表返回视图对象,是一个可遍历的key/value 对。:dict.keys()、dict.values() 和 dict.items() 返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的

    >>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}
    >>> keys = dishes.keys()
    >>> values = dishes.values()
    
    >>> # 迭代
    >>> n = 0
    >>> for val in values:
    ...     n += val
    >>> print(n)
    504
    
    >>> # keys 和 values 以相同顺序(插入顺序)进行迭代
    >>> list(keys)     # 使用 list() 转换为列表
    ['eggs', 'sausage', 'bacon', 'spam']
    >>> list(values)
    [2, 1, 1, 500]
    
    >>> # 视图对象是动态的,受字典变化的影响,以下删除了字典的 key,视图对象转为列表后也跟着变化
    >>> del dishes['eggs']
    >>> del dishes['sausage']
    >>> list(keys)
    ['bacon', 'spam']
    
  • dict.get(key, default=None):返回指定键的值,如果键不在字典中返回 default 设置的默认值

  • dict.setdefault(key, default=None):和 get()方法 类似,如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。

    #!/usr/bin/python3
    
    dict = {'Name': 'Runoob', 'Age': 7}
    
    print ("Age 键的值为 : %s" %  dict.setdefault('Age', None))
    print ("Sex 键的值为 : %s" %  dict.setdefault('Sex', None))
    print ("新字典为:", dict)
    
    Age 键的值为 : 7
    Sex 键的值为 : None
    新字典为: {'Age': 7, 'Name': 'Runoob', 'Sex': None}
    
  • dict.update(dict2):把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里,该方法没有任何返回值。

  • dict.pop(key[,default]):删除字典给定键 key 所对应的值,返回值为被删除的值。如果没有 key,返回default值。

  • dict.popitem():随机返回并删除字典中的最后一对键和值。如果字典已经为空,却调用了此方法,就报出KeyError异常。

字符串常见内建方法

:所有字符串方法都返回新值。它们不会更改原始字符串。

  • capitalize():将字符串的第一个字符转换为大写

  • title():返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())

  • swapcase():将字符串中大写转换为小写,小写转换为大写

  • lower():转换字符串中所有大写字符为小写.

  • upper():转换字符串中的小写字母为大写

  • str.center(width[, fillchar]):返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格.如果指定的长度小于原字符串的长度则返回原字符串。

  • str.ljust(width[, fillchar]):返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格.如果指定的长度小于原字符串的长度则返回原字符串。

  • str.rjust(width[, fillchar]):返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串.如果指定的长度小于原字符串的长度则返回原字符串

  • str.zfill(width):返回长度为 width 的字符串,原字符串右对齐,前面填充0

  • str.lstrip([chars]):截掉字符串左边的空格或指定字符。

  • str.rstrip([chars]):删除字符串末尾的空格或指定字符。

  • str.strip([chars]):用于移除字符串头尾指定的字符(默认为空格)或字符序列。注意,该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

  • str.isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False

  • str.isalpha():如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False

  • str.isdigit():如果字符串只包含数字(即不接受其他一切非 [0-9] 元素),则返回 True ,否则返回 False

  • str.isspace():测字符串是否只由空白字符组成。如果字符串中只包含空白,则返回 True,否则返回 False.

  • str.isnumeric():如果字符串中只包含数字字符,则返回 True,否则返回 False.数字字符可以是: Unicode 数字,全角数字(双字节),罗马数字,汉字数字。指数类似 ² 与分数类似 ½ 也属于数字。

  • str.isdecimal():检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

  • str.istitle():如果字符串是标题化的(见 title())则返回 True,否则返回 False

  • str.isupper():检测字符串中所有的字母是否都为大写。

  • str.islower():检测字符串是否由小写字母组成。

  • str.startswith(substr, beg=0,end=len(string)):检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。

  • str.endswith(suffix[, start[, end]]):用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回 True,否则返回 False。可选参数 "start" 与 "end" 为检索字符串的开始与结束位置。

  • str.encode(encoding='UTF-8',errors='strict'):以指定的编码格式编码字符串,errors参数可以指定不同的错误处理方案。该方法返回编码后的字符串,它是一个 bytes 对象

    #!/usr/bin/python3
    
    str = "菜鸟教程";
    str_utf8 = str.encode("UTF-8")
    str_gbk = str.encode("GBK")
    
    print(str)
    
    print("UTF-8 编码:", str_utf8)
    print("GBK 编码:", str_gbk)
    
    print("UTF-8 解码:", str_utf8.decode('UTF-8','strict'))
    print("GBK 解码:", str_gbk.decode('GBK','strict'))
    
    菜鸟教程
    UTF-8 编码: b'\xe8\x8f\x9c\xe9\xb8\x9f\xe6\x95\x99\xe7\xa8\x8b'
    GBK 编码: b'\xb2\xcb\xc4\xf1\xbd\xcc\xb3\xcc'
    UTF-8 解码: 菜鸟教程
    GBK 解码: 菜鸟教程
    
  • bytes.decode(encoding="utf-8", errors="strict"):Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。encoding为以指定的编码格式解码 bytes 对象。默认编码为 'utf-8'。

  • str.split(str="", num=string.count(str)):通过指定分隔符对字符串进行切片,如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。分隔符默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等

  • str.splitlines([keepends]):按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。默认为 False,不包含换行符

    >>> 'ab c\n\nde fg\rkl\r\n'.splitlines()
    ['ab c', '', 'de fg', 'kl']
    >>> 'ab c\n\nde fg\rkl\r\n'.splitlines(True)
    ['ab c\n', '\n', 'de fg\r', 'kl\r\n']
    
  • str.join(sequence):以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

  • str.replace(old, new[, max]):把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。

  • str.count(sub, start= 0,end=len(string)):用于统计字符串里某个子串出现的次数。可选参数为在字符串搜索的开始与结束位置。

  • find(str, beg=0, end=len(string)):检测 子串str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1

  • rfind(str, beg=0,end=len(string)):类似于 find()函数,不过是从右边开始查找

  • index(str, beg=0, end=len(string)):跟find()方法一样,只不过如果str不在字符串中会报一个异常

  • rindex( str, beg=0, end=len(string)):类似于 index(),不过是从右边开始.

  • max(str):返回字符串中最大的字母。

  • min(str):返回字符串 str 中最小的字母。

  • len(string):返回字符串长度

其他

python中将列表当做堆栈使用

列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。例如:

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]

python中队列使用

也可以把列表当做队列用,其中先添加的元素被最先取出 (“先进先出”);然而列表用作这个目的相当低效。因为在列表的末尾添加和弹出元素非常快,但是在列表的开头插入或弹出元素却很慢 (因为所有的其他元素都必须移动一位)。
若要实现一个队列, collections.deque 被设计用于快速地从两端操作。例如

>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry")           # Terry arrives
>>> queue.append("Graham")          # Graham arrives
>>> queue.popleft()                 # The first to arrive now leaves
'Eric'
>>> queue.popleft()                 # The second to arrive now leaves
'John'
>>> queue                           # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])

python中的无穷大

  • float('inf'): 表示正无穷;
  • -float('inf') 或 float('-inf'): 表示负无穷;

其中,inf 均可以写成 Inf,(inf 全称为 infinity)。

posted on 2021-03-01 19:23  朴素贝叶斯  阅读(160)  评论(0编辑  收藏  举报

导航