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)。