Python3数据类型
1.Python3 基本数据类型简介
1.1 变量赋值
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:
#!/usr/bin/python3 counter = 100 # 整型变量 miles = 1000.0 # 浮点型变量 name = "lizexiong" # 字符串 print (counter) print (miles) print (name) 执行以上程序会输出如下结果: 100 1000.0 lizexiong
1.2 多个变量赋值
Python允许你同时为多个变量赋值。例如:
a = b = c = 1
以上实例,创建一个整型对象,值为 1,从后向前赋值,三个变量被赋予相同的数值。
您也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, "lizexiong"
以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "lizexiong" 分配给变量 c。
1.3 标准数据类型
Python3 中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3 的六个标准数据类型中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
1.4 Number(数字)
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
像大多数语言一样,数值类型的赋值和计算都是很直观的。
内置的 type() 函数可以用来查询变量所指的对象类型。
>>> a, b, c, d = 20, 5.5, True, 4+3j >>> print(type(a), type(b), type(c), type(d)) <class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
此外还可以用 isinstance 来判断:
>>> a = 111
>>> isinstance(a, int)
True
>>>
isinstance 和 type 的区别在于:
- type()不会认为子类是一种父类类型。
- isinstance()会认为子类是一种父类类型。
>>> class A: ... pass ... >>> class B(A): ... pass ... >>> isinstance(A(), A) True >>> type(A()) == A True >>> isinstance(B(), A) True >>> type(B()) == A False
注意:Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。 >>> issubclass(bool, int) True >>> True==1 True >>> False==0 True >>> True+1 2 >>> False+1 1 >>> 1 is True False >>> 0 is False False 在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。
当你指定一个值时,Number 对象就会被创建:
var1 = 1
var2 = 10
您也可以使用del语句删除一些对象引用。
del语句的语法是:
del var1[,var2[,var3[....,varN]]]
您可以通过使用del语句删除单个或多个对象。例如:
del var del var_a, var_b
1.4.1 数值运算
>>> 5 + 4 # 加法 9 >>> 4.3 - 2 # 减法 2.3 >>> 3 * 7 # 乘法 21 >>> 2 / 4 # 除法,得到一个浮点数 0.5 >>> 2 // 4 # 除法,得到一个整数 0 >>> 17 % 3 # 取余 2 >>> 2 ** 5 # 乘方 32
注意:
- Python可以同时为多个变量赋值,如a, b = 1, 2。
- 一个变量可以通过赋值指向不同类型的对象。
- 数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
- 在混合计算时,Python会把整型转换成为浮点数。
1.4.2 数值类型实例
Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
1.5 String(字符串)
Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。
字符串的截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,与之结合的数字为复制的次数。实例如下:
#!/usr/bin/python3 #根据菜鸟教程学习,这里Runoob替换本人测试字符 str = 'Lizexiong' print (str) # 输出字符串 print (str[0:-1]) # 输出第一个到倒数第二个的所有字符 print (str[0]) # 输出字符串第一个字符 print (str[2:5]) # 输出从第三个开始到第五个的字符 print (str[2:]) # 输出从第三个开始的后的所有字符 print (str * 2) # 输出字符串两次,也可以写成 print (2 * str) print (str + "TEST") # 连接字符串 执行以上程序会输出如下结果: Lizexiong Lizexion L zex zexiong LizexiongLizexiong LizexiongTEST
Python 使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:
>>> print ('Li\nzexiong') Li zexiong >>> print (r'li\nzexiong') li\nzexiong
另外,反斜杠(\)可以作为续行符,表示下一行是上一行的延续。也可以使用 """...""" 或者 '''...''' 跨越多行。
注意,Python 没有单独的字符类型,一个字符就是长度为1的字符串。
>>> word = 'Python' >>> print(word[0], word[5]) P n >>> print(word[-1], word[-6]) n P
与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。
注意:
- 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
- 字符串可以用+运算符连接在一起,用*运算符重复。
- Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
- Python中的字符串不能改变。
1.6 List(列表)
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:
#!/usr/bin/python3 list = [ 'abcd', 786 , 2.23, 'Lizexiong', 70.2 ] tinylist = [123, 'Lizexiong'] print (list) # 输出完整列表 print (list[0]) # 输出列表第一个元素 print (list[1:3]) # 从第二个开始输出到第三个元素 print (list[2:]) # 输出从第三个元素开始的所有元素 print (tinylist * 2) # 输出两次列表 print (list + tinylist) # 连接列表 以上实例输出结果: ['abcd', 786, 2.23, 'Lizexiong', 70.2] abcd [786, 2.23] [2.23, 'Lizexiong', 70.2] [123, 'Lizexiong', 123, 'Lizexiong'] ['abcd', 786, 2.23, 'Lizexiong', 70.2, 123, 'Lizexiong']
与Python字符串不一样的是,列表中的元素是可以改变的:
>>> a = [1, 2, 3, 4, 5, 6] >>> a[0] = 9 >>> a[2:5] = [13, 14, 15] >>> a [9, 2, 13, 14, 15, 6] >>> a[2:5] = [] # 将对应的元素值设置为 [] >>> a [9, 2, 6]
List 内置了有很多方法,例如 append()、pop() 等等,这在后面会讲到。
注意:
- List写在方括号之间,元素用逗号隔开。
- 和字符串一样,list可以被索引和切片。
- List可以使用+操作符进行拼接。
- List中的元素是可以改变的。
Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串:
如果第三个参数为负数表示逆向读取,以下实例用于翻转字符串:
def reverseWords(input): # 通过空格将字符串分隔符,把各个单词分隔为列表 inputWords = input.split(" ") # 翻转字符串 # 假设列表 list = [1,2,3,4], # list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样) # inputWords[-1::-1] 有三个参数 # 第一个参数 -1 表示最后一个元素 # 第二个参数为空,表示移动到列表末尾 # 第三个参数为步长,-1 表示逆向 inputWords=inputWords[-1::-1] # 重新组合字符串 output = ' '.join(inputWords) return output if __name__ == "__main__": input = 'I like lizexiong' rw = reverseWords(input) print(rw) 输出结果为: Lizexiong like I
1.7 Tuple(元组)
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
元组中的元素类型也可以不相同:
#!/usr/bin/python3 tuple = ( 'abcd', 786 , 2.23, 'lizexiong', 70.2 ) tinytuple = (123, 'lizexiong') print (tuple) # 输出完整元组 print (tuple[0]) # 输出元组的第一个元素 print (tuple[1:3]) # 输出从第二个元素开始到第三个元素 print (tuple[2:]) # 输出从第三个元素开始的所有元素 print (tinytuple * 2) # 输出两次元组 print (tuple + tinytuple) # 连接元组 以上实例输出结果: ('abcd', 786, 2.23, 'lizexiong', 70.2) abcd (786, 2.23) (2.23, 'lizexiong', 70.2) (123, 'lizexiong', 123, 'lizexiong') ('abcd', 786, 2.23, 'lizexiong', 70.2, 123, 'lizexiong')
元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取(看上面,这里不再赘述)。
其实,可以把字符串看作一种特殊的元组。
>>> tup = (1, 2, 3, 4, 5, 6) >>> print(tup[0]) 1 >>> print(tup[1:5]) (2, 3, 4, 5) >>> tup[0] = 11 # 修改元组元素的操作是非法的 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1 = () # 空元组 tup2 = (20,) # 一个元素,需要在元素后添加逗号
string、list 和 tuple 都属于 sequence(序列)。
注意:
- 与字符串一样,元组的元素不能修改。
- 元组也可以被索引和切片,方法一样。
- 注意构造包含 0 或 1 个元素的元组的特殊语法规则。
- 元组也可以使用+操作符进行拼接。
1.8 Dictionary(字典)
字典(dictionary)是Python中另一个非常有用的内置数据类型。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
#!/usr/bin/python3 dict = {} dict['one'] = "1 - 华为" dict[2] = "2 - 三星" tinydict = {'name': 'lizexiong','code':1, 'site': 'www.lizexiong.com'} print (dict['one']) # 输出键为 'one' 的值 print (dict[2]) # 输出键为 2 的值 print (tinydict) # 输出完整的字典 print (tinydict.keys()) # 输出所有键 print (tinydict.values()) # 输出所有值 结果输出如下: 1 - 华为 2 - 三星 {'name': 'lizexiong', 'code': 1, 'site': 'www.lizexiong.com'} dict_keys(['name', 'code', 'site']) dict_values(['lizexiong', 1, 'www.lizexiong.com'])
构造函数 dict() 可以直接从键值对序列中构建字典如下:
>>> dict([('Lizexiong', 1), ('Google', 2), ('Taobao', 3)]) {'Lizexiong': 1, 'Google': 2, 'Taobao': 3} >>> {x: x**2 for x in (2, 4, 6)} {2: 4, 4: 16, 6: 36} >>> dict(Lizexiong=1, Google=2, Taobao=3) {'Lizexiong': 1, 'Google': 2, 'Taobao': 3}
{x: x**2 for x in (2, 4, 6)} 该代码使用的是字典推导式,更多推导式内容可以参考:Python 推导式章节
另外,字典类型也有一些内置的函数,例如 clear()、keys()、values() 等。
注意:
- 字典是一种映射类型,它的元素是键值对。
- 字典的关键字必须为不可变类型,且不能重复。
- 创建空字典使用 { }。
1.9 Set(集合)
集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
#!/usr/bin/python3 sites = {'Google', 'Taobao', 'Lizexiong', 'Facebook', 'Zhihu', 'Baidu'} print(sites) # 输出集合,重复的元素被自动去掉 # 成员测试 if 'Lizexiong' in sites : print('Lizexiong 在集合中') else : print('Lizexiong 不在集合中') # set可以进行集合运算 a = set('abracadabra') b = set('alacazam') print(a) print(a - b) # a 和 b 的差集 print(a | b) # a 和 b 的并集 print(a & b) # a 和 b 的交集 print(a ^ b) # a 和 b 中不同时存在的元素 输出为以下: {'Facebook', 'Google', 'Lizexiong', 'Zhihu', 'Baidu', 'Taobao'} Lizexiong 在集合中 {'c', 'r', 'b', 'd', 'a'} {'b', 'r', 'd'} {'l', 'c', 'z', 'r', 'b', 'm', 'd', 'a'} {'c', 'a'} {'l', 'z', 'd', 'r', 'b', 'm'}
2.Python3数据类型转换
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,一般情况下你只需要将数据类型作为函数名即可。
Python 数据类型转换可以分为两种:
- 隐式类型转换 - 自动完成
- 显式类型转换 - 需要使用类型函数来转换
2.1 隐式类型转换
在隐式类型转换中,Python 会自动将一种数据类型转换为另一种数据类型,不需要我们去干预。
以下实例中,我们对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失。
num_int = 123 num_flo = 1.23 num_new = num_int + num_flo print("datatype of num_int:",type(num_int)) print("datatype of num_flo:",type(num_flo)) print("Value of num_new:",num_new) print("datatype of num_new:",type(num_new)) 以上实例输出结果为: num_int 数据类型为: <class 'int'> num_flo 数据类型为: <class 'float'> num_new: 值为: 124.23 num_new 数据类型为: <class 'float'>
代码解析:
- 实例中我们对两个不同数据类型的变量 num_int 和 num_flo 进行相加运算,并存储在变量 num_new 中。
- 然后查看三个变量的数据类型。
- 在输出结果中,我们看到 num_int 是 整型(integer) , num_flo 是 浮点型(float)。
- 同样,新的变量 num_new 是 浮点型(float),这是因为 Python 会将较小的数据类型转换为较大的数据类型,以避免数据丢失。
我们再看一个实例,整型数据与字符串类型的数据进行相加:
num_int = 123 num_str = "456" print("Data type of num_int:",type(num_int)) print("Data type of num_str:",type(num_str)) print(num_int+num_str) 以上实例输出结果为: num_int 数据类型为: <class 'int'> num_str 数据类型为: <class 'str'> Traceback (most recent call last): File "/test/test.py", line 7, in <module> print(num_int+num_str) TypeError: unsupported operand type(s) for +: 'int' and 'str'
从输出中可以看出,整型和字符串类型运算结果会报错,输出 TypeError。 Python 在这种情况下无法使用隐式转换。
但是,Python 为这些类型的情况提供了一种解决方案,称为显式转换。
2.2 显式类型转换
在显式类型转换中,用户将对象的数据类型转换为所需的数据类型。 我们使用 int()、float()、str() 等预定义函数来执行显式类型转换。
int() 强制转换为整型:
x = int(1) # x 输出结果为 1 y = int(2.8) # y 输出结果为 2 z = int("3") # z 输出结果为 3
float() 强制转换为浮点型:
x = float(1) # x 输出结果为 1.0 y = float(2.8) # y 输出结果为 2.8 z = float("3") # z 输出结果为 3.0 w = float("4.2") # w 输出结果为 4.2
str() 强制转换为字符串类型:
x = str("s1") # x 输出结果为 's1' y = str(2) # y 输出结果为 '2' z = str(3.0) # z 输出结果为 '3.0'
整型和字符串类型进行运算,就可以用强制类型转换来完成:
num_int = 123 num_str = "456" print("num_int 数据类型为:",type(num_int)) print("类型转换前,num_str 数据类型为:",type(num_str)) num_str = int(num_str) # 强制转换为整型 print("类型转换后,num_str 数据类型为:",type(num_str)) num_sum = num_int + num_str print("num_int 与 num_str 相加结果为:",num_sum) print("sum 数据类型为:",type(num_sum)) 以上实例输出结果为: num_int 数据类型为: <class 'int'> 类型转换前,num_str 数据类型为: <class 'str'> 类型转换后,num_str 数据类型为: <class 'int'> num_int 与 num_str 相加结果为: 579 sum 数据类型为: <class 'int'>
2.3 内置的函数
以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。
- int(x [,base])
描述
int() 函数用于将一个字符串或数字转换为整型。
语法
以下是 int() 方法的语法:
class int(x, base=10)
参数
x -- 字符串或数字。
base -- 进制数,默认十进制。
返回值
返回整型数据。
实例
以下展示了使用 int() 方法的实例:
>>>int() # 不传入参数时,得到结果0 0 >>> int(3) 3 >>> int(3.6) 3 >>> int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制 18 >>> int('0xa',16) 10 >>> int('10',8) 8
- float() 函数
描述
float() 函数用于将整数和字符串转换成浮点数。
语法
float()方法语法:
class float([x])
参数
x -- 整数或字符串
返回值
返回浮点数。
实例
以下实例展示了 float() 的使用方法:
>>>float(1) 1.0 >>> float(112) 112.0 >>> float(-123.6) -123.6 >>> float('123') # 字符串 123.0
- complex() 函数
描述
complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。
语法
complex 语法:
class complex([real[, imag]])
参数说明:
real -- int, long, float或字符串;
imag -- int, long, float;
返回值
返回一个复数。
实例
以下实例展示了 complex 的使用方法:
>>>complex(1, 2) (1 + 2j) >>> complex(1) # 数字 (1 + 0j) >>> complex("1") # 当做字符串处理 (1 + 0j) # 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错 >>> complex("1+2j") (1 + 2j)
- str() 函数
描述
str() 函数将对象转化为适于人阅读的形式。
语法
以下是 str() 方法的语法:
class str(object='')
参数
object -- 对象。
返回值
返回一个对象的string格式。
实例
以下展示了使用 str() 方法的实例:
>>>s = 'LIZEXIONG' >>> str(s) 'LIZEXIONG' >>> dict = {'lizexiong': 'lizexiong.com', 'google': 'google.com'}; >>> str(dict) "{'google': 'google.com', 'lizexiong': 'lizexiong.com'}" >>>
- repr() 函数
描述
repr() 函数将对象转化为供解释器读取的形式。
语法
以下是 repr() 方法的语法:
repr(object)
参数
object -- 对象。
返回值
返回一个对象的 string 格式。
实例
以下展示了使用 repr() 方法的实例:
>>> s = 'LIZEXIONG' >>> repr(s) "'LIZEXIONG'" >>>dict = {'lizexiong': 'lizexiong.com', 'google': 'google.com'}; >>> repr(dict) "{'google': 'google.com', 'lizexiong': 'lizexiong.com'}" >>> 示例2 s="物品\t单价\t数量\n包子\t1\t2" print(s) print(repr(s)) 运行结果: 物品 单价 数量 包子 1 2 '物品\t单价\t数量\n包子\t1\t2'
- eval() 函数
描述
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
语法
以下是 eval() 方法的语法:
eval(expression[, globals[, locals]])
参数
expression -- 表达式。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
返回值
返回表达式计算结果。
实例
以下展示了使用 eval() 方法的实例:
>>>x = 7 >>> eval( '3 * x' ) 21 >>> eval('pow(2,2)') 4 >>> eval('2 + 2') 4 >>> n=81 >>> eval("n + 4") 85
- tuple()方法
描述
tuple 函数将可迭代系列(如列表)转换为元组。
语法
tuple()方法语法:
tuple( iterable )
参数
iterable -- 要转换为元组的可迭代序列。
返回值
返回元组。
实例
以下实例展示了 tuple()函数的使用方法:
>>>list1= ['Google', 'Taobao', 'Lizexiong', 'Baidu'] >>> tuple1=tuple(list1) >>> tuple1 ('Google', 'Taobao', 'Lizexiong', 'Baidu')
- list()方法
描述
list() 方法用于将元组或字符串转换为列表。
注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。
语法
list()方法语法:
list( seq )
参数
seq --要转换为列表的元组或字符串。
返回值
返回列表。
实例
以下实例展示了 list() 函数的使用方法:
#!/usr/bin/python3 aTuple = (123, 'Google', 'Lizexiong', 'Taobao') list1 = list(aTuple) print ("列表元素 : ", list1) str="Hello World" list2=list(str) print ("列表元素 : ", list2) 以上实例输出结果如下: 列表元素 : [123, 'Google', 'Lizexiong', 'Taobao'] 列表元素 : ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
- set() 函数
描述
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
语法
set 语法:
class set([iterable])
参数说明:
iterable -- 可迭代对象对象;
返回值
返回新的集合对象。
实例
以下实例展示了 set 的使用方法:
交集 & : x&y,返回一个新的集合,包括同时在集合 x 和y中的共同元素。 并集 | : x|y,返回一个新的集合,包括集合 x 和 y 中所有元素。 差集 - : x-y,返回一个新的集合,包括在集合 x 中但不在集合 y 中的元素。 补集 ^ : x^y,返回一个新的集合,包括集合 x 和 y 的非共同元素。 >>> x = set('lizexiong') >>> y = set('google') >>> x,y ({'l', 'o', 'g', 'z', 'x', 'n', 'e', 'i'}, {'e', 'l', 'o', 'g'}) # 重复的被删除 >>> x & y # 交集 {'e', 'l', 'o', 'g'} >>> set(['o']) {'o'} >>> x | y # 并集 {'l', 'o', 'g', 'z', 'x', 'n', 'e', 'i'} >>> x - y # 差集 {'n', 'z', 'x', 'i'} >>>
- dict() 函数
描述
dict() 函数用于创建一个字典。
语法
dict 语法:
class dict(**kwarg) class dict(mapping, **kwarg) class dict(iterable, **kwarg)
参数说明:
**kwargs -- 关键字。
mapping -- 元素的容器,映射类型(Mapping Types)是一种关联式的容器类型,它存储了对象与对象之间的映射关系。
iterable -- 可迭代对象。
返回值
返回一个字典。
实例
以下实例展示了 dict 的使用方法:
>>>dict() # 创建空字典 {} >>> dict(a='a', b='b', t='t') # 传入关键字 {'a': 'a', 'b': 'b', 't': 't'} >>> dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典 {'three': 3, 'two': 2, 'one': 1} >>> dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典 {'three': 3, 'two': 2, 'one': 1} >>>
只使用关键字参数创建字典
numbers = dict(x=5, y=0) print('numbers =', numbers) print(type(numbers)) empty = dict() print('empty =', empty) print(type(empty)) 以上实例输出结果为: numbers = {'y': 0, 'x': 5} <class 'dict'> empty = {} <class 'dict'>
使用可迭代对象创建字典
# 没有设置关键字参数 numbers1 = dict([('x', 5), ('y', -5)]) print('numbers1 =',numbers1) # 设置关键字参数 numbers2 = dict([('x', 5), ('y', -5)], z=8) print('numbers2 =',numbers2) # zip() 创建可迭代对象 numbers3 = dict(dict(zip(['x', 'y', 'z'], [1, 2, 3]))) print('numbers3 =',numbers3) 以上实例输出结果为: numbers1 = {'y': -5, 'x': 5} numbers2 = {'z': 8, 'y': -5, 'x': 5} numbers3 = {'z': 3, 'y': 2, 'x': 1}
使用映射来创建字典
映射类型(Mapping Types)是一种关联式的容器类型,它存储了对象与对象之间的映射关系。
numbers1 = dict({'x': 4, 'y': 5}) print('numbers1 =',numbers1) # 以下代码不需要使用 dict() numbers2 = {'x': 4, 'y': 5} print('numbers2 =',numbers2) # 关键字参数会被传递 numbers3 = dict({'x': 4, 'y': 5}, z=8) print('numbers3 =',numbers3) 以上实例输出结果为: numbers1 = {'x': 4, 'y': 5} numbers2 = {'x': 4, 'y': 5} numbers3 = {'x': 4, 'z': 8, 'y': 5}
- frozenset() 函数
描述
frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
语法
frozenset() 函数语法:
class frozenset([iterable])
参数
iterable -- 可迭代的对象,比如列表、字典、元组等等。
返回值
返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。
实例
以下实例展示了 frozenset() 的使用方法:
>>>a = frozenset(range(10)) # 生成一个新的不可变集合 >>> a frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> b = frozenset('lizexiong') >>> b frozenset({'l', 'o', 'g', 'z', 'x', 'n', 'e', 'i'}) # 创建不可变集合 >>>
为什么需要冻结的集合(即不可变的集合)呢?因为在集合的关系中,有集合的中的元素是另一个集合的情况,但是普通集合(set)本身是可变的,那么它的实例就不能放在另一个集合中(set中的元素必须是不可变类型)。
所以,frozenset提供了不可变的集合的功能,当集合不可变时,它就满足了作为集合中的元素的要求,就可以放在另一个集合中了。
- chr() 函数
描述
chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
语法
以下是 chr() 方法的语法:
chr(i)
参数
i -- 可以是10进制也可以是16进制的形式的数字。
返回值
返回值是当前整数对应的 ASCII 字符。
实例
以下展示了使用 chr() 方法的实例:
>>>print (chr(0x30), chr(0x31), chr(0x61)) # 十六进制 0 1 a >>> print (chr(48), chr(49), chr(97)) # 十进制 0 1 a
- hex() 函数
描述
hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。
语法
hex 语法:
hex(x)
参数说明:
x -- 10进制整数
返回值
返回16进制数,以字符串形式表示。
实例
以下实例展示了 hex 的使用方法:
>>>hex(255) '0xff' >>> hex(-42) '-0x2a' >>> hex(1L) '0x1L' >>> hex(12) '0xc' >>> type(hex(12)) <class 'str'> # 字符串
- oct() 函数
描述
oct() 函数将一个整数转换成 8 进制字符串。
-
- Python2.x 版本的 8 进制以 0 作为前缀表示。
- Python3.x 版本的 8 进制以 0o 作为前缀表示。
语法
oct 语法:
oct(x)
参数说明:
x -- 整数。
返回值
返回 8 进制字符串。
实例
以下实例展示了 oct 的使用方法:
实例(Python 2.0+) >>> oct(10) '012' >>> oct(20) '024' >>> oct(15) '017' 实例(Python 3.0+) >>> oct(10) '0o12' >>> oct(20) '0o24' >>> oct(15) '0o17'
3.Python3 Number(数字)
Python 数字数据类型用于存储数值。
数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。
以下实例在变量赋值时 Number 对象将被创建:
var1 = 1
var2 = 10
您也可以使用del语句删除一些数字对象的引用。
del语句的语法是:
del var1[,var2[,var3[....,varN]]]
您可以通过使用del语句删除单个或多个对象的引用,例如:
del var del var_a, var_b
Python 支持三种不同的数值类型:
- 整型(int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。布尔(bool)是整型的子类型。
- 浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
- 复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
我们可以使用十六进制和八进制来代表整数:
>>> number = 0xA0F # 十六进制 >>> number 2575 >>> number=0o37 # 八进制 >>> number 31
- Python支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
3.1 Python 数字类型转换
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
- int(x) 将x转换为一个整数。
- float(x) 将x转换到一个浮点数。
- complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
- complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
以下实例将浮点数变量 a 转换为整数:
>>> a = 1.0
>>> int(a)
1
3.2 Python 数字运算
Python 解释器可以作为一个简单的计算器,您可以在解释器里输入一个表达式,它将输出表达式的值。
表达式的语法很直白: +, -, * 和 /, 和其它语言(如Pascal或C)里一样。例如:
>>> 2 + 2 4 >>> 50 - 5*6 20 >>> (50 - 5*6) / 4 5.0 >>> 8 / 5 # 总是返回一个浮点数 1.6
注意:在不同的机器上浮点运算的结果可能会不一样。
在整数除法中,除法 / 总是返回一个浮点数,如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符 // :
>>> 17 / 3 # 整数除法返回浮点型 5.666666666666667 >>> >>> 17 // 3 # 整数除法返回向下取整后的结果 5 >>> 17 % 3 # %操作符返回除法的余数 2 >>> 5 * 3 + 2 17
注意:// 得到的并不一定是整数类型的数,它与分母分子的数据类型有关系。
>>> 7//2 3 >>> 7.0//2 3.0 >>> 7//2.0 3.0 >>>
等号 = 用于给变量赋值。赋值之后,除了下一个提示符,解释器不会显示任何结果。
>>> width = 20
>>> height = 5*9
>>> width * height
900
Python 可以使用 ** 操作来进行幂运算:
>>> 5 ** 2 # 5 的平方 25 >>> 2 ** 7 # 2的7次方 128
变量在使用前必须先"定义"(即赋予变量一个值),否则会出现错误:
>>> n # 尝试访问一个未定义的变量 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'n' is not defined
不同类型的数混合运算时会将整数转换为浮点数:
>>> 3 * 3.75 / 1.5 7.5 >>> 7.0 / 2 3.5
在交互模式中,最后被输出的表达式结果被赋值给变量 _ 。例如:
>>> tax = 12.5 / 100 >>> price = 100.50 >>> price * tax 12.5625 >>> price + _ 113.0625 >>> round(_, 2) 113.06
此处, _变量应被用户视为只读变量。
3.3 数学函数
- abs() 函数
描述
abs() 函数返回数字的绝对值。
语法
以下是 abs() 方法的语法:
abs( x )
参数
x -- 数值表达式,可以是整数,浮点数,复数。
返回值
函数返回 x(数字)的绝对值,如果参数是一个复数,则返回它的大小。
实例
以下展示了使用 abs() 方法的实例:
#!/usr/bin/python3 print ("abs(-40) : ", abs(-40)) print ("abs(100.10) : ", abs(100.10)) 以上实例运行后输出结果为: abs(-40) : 40 abs(100.10) : 100.1
- ceil() 函数
描述
ceil(x) 函数返回一个大于或等于 x 的的最小整数。
语法
以下是 ceil() 方法的语法:
import math math.ceil( x )
注意:ceil()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。
参数
x -- 数值表达式。
返回值
函数返回一个大于或等于 x 的的最小整数。
实例
以下展示了使用 ceil() 方法的实例:
#!/usr/bin/python3 import math # 导入 math 模块 print ("math.ceil(-45.17) : ", math.ceil(-45.17)) print ("math.ceil(100.12) : ", math.ceil(100.12)) print ("math.ceil(100.72) : ", math.ceil(100.72)) print ("math.ceil(math.pi) : ", math.ceil(math.pi)) 以上实例运行后输出结果为: math.ceil(-45.17) : -45 math.ceil(100.12) : 101 math.ceil(100.72) : 101 math.ceil(math.pi) : 4
- exp() 函数
描述
exp() 方法返回x的指数,ex。
语法
以下是 exp() 方法的语法:
import math math.exp( x )
math.exp( x )
注意:exp()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。
参数
x -- 数值表达式。
返回值
返回x的指数,ex。
实例
以下展示了使用 exp() 方法的实例:
#!/usr/bin/python3 import math # 导入 math 模块 print ("math.exp(-45.17) : ", math.exp(-45.17)) print ("math.exp(100.12) : ", math.exp(100.12)) print ("math.exp(100.72) : ", math.exp(100.72)) print ("math.exp(math.pi) : ", math.exp(math.pi)) 以上实例运行后输出结果为: math.exp(-45.17) : 2.4150062132629406e-20 math.exp(100.12) : 3.0308436140742566e+43 math.exp(100.72) : 5.522557130248187e+43 math.exp(math.pi) : 23.140692632779267
- fabs() 函数
描述
fabs() 方法返回数字的绝对值,如math.fabs(-10) 返回10.0。
fabs() 函数类似于 abs() 函数,但是他有两点区别:
-
- abs() 是内置函数。 fabs() 函数在 math 模块中定义。
- fabs() 函数只对浮点型跟整型数值有效。 abs() 还可以运用在复数中。
语法
以下是 fabs() 方法的语法:
import math math.fabs( x )
注意:fabs()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。
参数
x -- 数值表达式。
返回值
返回数字的绝对值。
实例
以下展示了使用 fabs() 方法的实例:
#!/usr/bin/python3 import math # 导入 math 模块 print ("math.fabs(-45.17) : ", math.fabs(-45.17)) print ("math.fabs(100.12) : ", math.fabs(100.12)) print ("math.fabs(100.72) : ", math.fabs(100.72)) print ("math.fabs(math.pi) : ", math.fabs(math.pi)) 以上实例运行后输出结果为: math.fabs(-45.17) : 45.17 math.fabs(100.12) : 100.12 math.fabs(100.72) : 100.72 math.fabs(math.pi) : 3.141592653589793
- floor() 函数
描述
floor(x) 返回数字的下舍整数,小于或等于 x。
语法
以下是 floor() 方法的语法:
import math math.floor( x )
注意:floor()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。
参数
x -- 数值表达式。
返回值
返回小于或等于 x 的整数。
实例
以下展示了使用 floor() 方法的实例:
#!/usr/bin/python import math # 导入 math 模块 print ("math.floor(-45.17) : ", math.floor(-45.17)) print ("math.floor(100.12) : ", math.floor(100.12)) print ("math.floor(100.72) : ", math.floor(100.72)) print ("math.floor(math.pi) : ", math.floor(math.pi)) 以上实例运行后输出结果为: math.floor(-45.17) : -46 math.floor(100.12) : 100 math.floor(100.72) : 100 math.floor(math.pi) : 3
- log() 函数
描述
log() 方法返回x的自然对数,x > 0。
语法
以下是 log() 方法的语法:
import math math.log( x )
注意:log()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。
参数
x -- 数值表达式。
返回值
返回 x 的自然对数,x>0。
实例
以下展示了使用 log() 方法的实例:
#!/usr/bin/python3 import math # 导入 math 模块 print ("math.log(100.12) : ", math.log(100.12)) print ("math.log(100.72) : ", math.log(100.72)) print ("math.log(math.pi) : ", math.log(math.pi)) 以上实例运行后输出结果为: math.log(100.12) : 4.6063694665635735 math.log(100.72) : 4.612344389736092 math.log(math.pi) : 1.1447298858494002
- log10() 函数
描述
log10() 方法返回以10为基数的x对数,x>0。
语法
以下是 log10() 方法的语法:
import math math.log10( x )
注意:log10()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。
参数
x -- 数值表达式。
返回值
返回以10为基数的x对数,x>0。
实例
以下展示了使用 log10() 方法的实例:
#!/usr/bin/python3 import math # 导入 math 模块 print ("math.log10(100.12) : ", math.log10(100.12)) print ("math.log10(100.72) : ", math.log10(100.72)) print ("math.log10(119) : ", math.log10(119)) print ("math.log10(math.pi) : ", math.log10(math.pi)) 以上实例运行后输出结果为: math.log10(100.12) : 2.0005208409361854 math.log10(100.72) : 2.003115717099806 math.log10(119) : 2.0755469613925306 math.log10(math.pi) : 0.49714987269413385
- max() 函数
描述
max() 方法返回给定参数的最大值,参数可以为序列。
语法
以下是 max() 方法的语法:
max( x, y, z, .... )
参数
x -- 数值表达式。
y -- 数值表达式。
z -- 数值表达式。
返回值
返回给定参数的最大值。
实例
以下展示了使用 max() 方法的实例:
#!/usr/bin/python print ("max(80, 100, 1000) : ", max(80, 100, 1000)) print ("max(-20, 100, 400) : ", max(-20, 100, 400)) print ("max(-80, -20, -10) : ", max(-80, -20, -10)) print ("max(0, 100, -400) : ", max(0, 100, -400)) 以上实例运行后输出结果为: max(80, 100, 1000) : 1000 max(-20, 100, 400) : 400 max(-80, -20, -10) : -10 max(0, 100, -400) : 100 以下还有列表和字典的对比 >>> a=[1,2,3,4] >>> type(a) #类型是列表 <type 'list'> >>> max(a) #max函数也返回了最大值 4 >>> >>> >>> a=[(1,2),(2,3),(3,4)] #假设列表里面是元组构成元素呢 >>> max(a) #按照元素里面元组的第一个元素的排列顺序,输出最大值(如果第一个元素相同,则比较第二个元素,输出最大值)据推理是按ascii码进行排序的 (3, 4) >>> a=[('a',1),('A',1)] #实验推测是按ascii码进行排序,比较 a 和 A 的值,得出a > A , 因为ascii 码里面,按照排列顺序 小 a在 A的后面 >>> max(a) ('a', 1) >>> a=[(1,2),(2,3),(3,1)] >>> a=[(1,3),(2,2),(3,1)] #列表里面的元素都由元组构成,元组都由数字组成,输出最大值 >>> max(a) (3, 1) >>> a={1:2,2:2,3:1,4:'aa'} #比较字典里面的最大值,会输出最大的键值 >>> max(a) 4
- min() 函数
描述
min() 方法返回给定参数的最小值,参数可以为序列。
语法
以下是 min() 方法的语法:
min( x, y, z, .... )
参数
x -- 数值表达式。
y -- 数值表达式。
z -- 数值表达式。
返回值
返回给定参数的最小值。
实例
以下展示了使用 min() 方法的实例:
#!/usr/bin/python print ("min(80, 100, 1000) : ", min(80, 100, 1000)) print ("min(-20, 100, 400) : ", min(-20, 100, 400)) print ("min(-80, -20, -10) : ", min(-80, -20, -10)) print ("min(0, 100, -400) : ", min(0, 100, -400)) 以上实例运行后输出结果为: min(80, 100, 1000) : 80 min(-20, 100, 400) : -20 min(-80, -20, -10) : -80 min(0, 100, -400) : -400 #列表和字典和max()一样可以比较,这里就不举例了
- modf() 函数
描述
modf() 方法返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
语法
以下是 modf() 方法的语法:
import math math.modf( x )
注意:modf()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。
参数
x -- 数值表达式。
返回值
返回x的整数部分与小数部分,
实例
以下展示了使用 modf() 方法的实例:
#!/usr/bin/python3 import math # 导入 math 模块 print ("math.modf(100.12) : ", math.modf(100.12)) print ("math.modf(100.72) : ", math.modf(100.72)) print ("math.modf(119) : ", math.modf(119)) print ("math.modf(math.pi) : ", math.modf(math.pi)) 以上实例运行后输出结果为: math.modf(100.12) : (0.12000000000000455, 100.0) math.modf(100.72) : (0.7199999999999989, 100.0) math.modf(119) : (0.0, 119.0) math.modf(math.pi) : (0.14159265358979312, 3.0)
- pow() 函数
描述
pow()方法返回 xy(x 的 y 次方) 的值。
语法
以下是 math 模块 pow() 方法的语法:
import math math.pow( x, y )
内置的 pow() 方法
pow(x, y[, z])
函数是计算 x 的 y 次方,如果 z 在存在,则再对结果进行取模,其结果等效于 pow(x,y) %z。
注意:pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。
参数
x -- 数值表达式。
y -- 数值表达式。
z -- 数值表达式。
返回值
返回 xy(x的y次方) 的值。
实例
以下展示了使用 pow() 方法的实例:
#!/usr/bin/python3 import math # 导入 math 模块 print ("math.pow(100, 2) : ", math.pow(100, 2)) # 使用内置,查看输出结果区别 print ("pow(100, 2) : ", pow(100, 2)) print ("math.pow(100, -2) : ", math.pow(100, -2)) print ("math.pow(2, 4) : ", math.pow(2, 4)) print ("math.pow(3, 0) : ", math.pow(3, 0)) 以上实例运行后输出结果为: math.pow(100, 2) : 10000.0 pow(100, 2) : 10000 math.pow(100, -2) : 0.0001 math.pow(2, 4) : 16.0 math.pow(3, 0) : 1.0
- round() 函数
描述
round()方法返回浮点数 x 的四舍五入值,准确的说保留值将保留到离上一位更近的一端(四舍六入)。
精度要求高的,不建议使用该函数。
语法
以下是 round() 方法的语法:
round( x [, n] )
参数
x -- 数字表达式。
n -- 表示从小数点位数,其中 x 需要四舍五入,默认值为 0。
返回值
返回浮点数x的四舍五入值。
实例
以下展示了使用 round() 方法的实例:
#!/usr/bin/python3 print ("round(70.23456) : ", round(70.23456)) print ("round(56.659,1) : ", round(56.659,1)) print ("round(80.264, 2) : ", round(80.264, 2)) print ("round(100.000056, 3) : ", round(100.000056, 3)) print ("round(-100.000056, 3) : ", round(-100.000056, 3)) 以上实例运行后输出结果为: round(70.23456) : 70 round(56.659,1) : 56.7 round(80.264, 2) : 80.26 round(100.000056, 3) : 100.0 round(-100.000056, 3) : -100.0 看下官网给的一个例子: >>> round(2.675, 2) 2.67
按我们的想法返回结果应该是 2.68,可结果却是 2.67,为什么?
这跟浮点数的精度有关。我们知道在机器中浮点数不一定能精确表达,因为换算成一串 1 和 0 后可能是无限位数的,机器已经做出了截断处理。那么在机器中保存的2.675这个数字就比实际数字要小那么一点点。这一点点就导致了它离 2.67 要更近一点点,所以保留两位小数时就近似到了 2.67。
在实际使用中发现round函数并不总是如上所说的四舍五入。如: In [14]: round(2.355, 2) Out[14]: 2.35 注:环境为 python3.5.2 因为该函数对于返回的浮点数并不是按照四舍五入的规则来计算,而会收到计算机表示精度的影响。 关于该问题搜索后解释比较清楚的文章地址如下:http://www.runoob.com/w3cnote/python-round-func-note.html
- sqrt() 函数
描述
sqrt()方法返回数字x的平方根。
语法
以下是 sqrt() 方法的语法:
import math math.sqrt( x )
注意:sqrt()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。
参数
x -- 数值表达式。
返回值
返回数字x的平方根。
实例
以下展示了使用 sqrt() 方法的实例:
#!/usr/bin/python3 import math # This will import math module print ("math.sqrt(100) : ", math.sqrt(100)) print ("math.sqrt(7) : ", math.sqrt(7)) print ("math.sqrt(math.pi) : ", math.sqrt(math.pi)) 以上实例运行后输出结果为: math.sqrt(100) : 10.0 math.sqrt(7) : 2.6457513110645907 math.sqrt(math.pi) : 1.7724538509055159
3.4 随机数函数
随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。
Python包含以下常用随机数函数:
- choice() 函数
描述
choice()方法返回一个列表,元组或字符串的随机项。
语法
以下是 choice() 方法的语法:
import random random.choice( seq )
注意:choice()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
参数
seq -- 可以是一个列表,元组或字符串。
返回值
返回随机项。
实例
以下展示了使用 choice() 方法的实例:
#!/usr/bin/python3 import random print ("从 range(100) 返回一个随机数 : ",random.choice(range(100))) print ("从列表中 [1, 2, 3, 5, 9]) 返回一个随机元素 : ", random.choice([1, 2, 3, 5, 9])) print ("从字符串中 'lizexiong' 返回一个随机字符 : ", random.choice('lizexiong')) 以上实例运行后输出结果为: 从 range(100) 返回一个随机数 : 68 从列表中 [1, 2, 3, 5, 9]) 返回一个随机元素 : 2 从字符串中 'lizexiong' 返回一个随机字符 : z
- randrange() 函数
描述
randrange()方法返回指定递增基数集合中的一个随机数,基数默认值为1。
语法
以下是 randrange() 方法的语法:
import random random.randrange ([start,] stop [,step])
注意:randrange()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
参数
start -- 指定范围内的开始值,包含在范围内。
stop -- 指定范围内的结束值,不包含在范围内。
step -- 指定递增基数。
返回值
从给定的范围返回随机项。
实例
以下展示了使用 randrange() 方法的实例:
#!/usr/bin/python3 import random # 从 1-100 中选取一个奇数 print ("randrange(1,100, 2) : ", random.randrange(1, 100, 2)) # 从 0-99 选取一个随机数 print ("randrange(100) : ", random.randrange(100)) 以上实例运行后输出结果为: randrange(1,100, 2) : 97 randrange(100) : 42
- random() 函数
描述
random()方法返回随机生成的一个实数,它在[0,1)范围内。
语法
以下是 random() 方法的语法:
import random random.random()
注意:random()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
参数
无
返回值
返回随机生成的一个实数,它在[0,1)范围内。
实例
以下展示了使用 random() 方法的实例:
实例 #!/usr/bin/python # -*- coding: UTF-8 -*- import random # 生成第一个随机数 print ("random() : ", random.random()) # 生成第二个随机数 print ("random() : ", random.random()) 以上实例运行后输出结果为: random() : 0.281954791393 random() : 0.309090465205
- seed() 函数
描述
seed()方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。
语法
以下是 seed() 方法的语法:
import random random.seed ( [x] )
我们调用 random.random() 生成随机数时,每一次生成的数都是随机的。但是,当我们预先使用 random.seed(x) 设定好种子之后,其中的 x 可以是任意数字,如10,这个时候,先调用它的情况下,使用 random() 生成的随机数将会是同一个。
注意:seed()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
参数
x -- 改变随机数生成器的种子 seed。如果你不了解其原理,你不必特别去设定 seed,Python会帮你选择 seed。
返回值
本函数没有返回值。
实例
以下展示了使用 seed() 方法的实例:
#!/usr/bin/python3 import random random.seed() print ("使用默认种子生成随机数:", random.random()) print ("使用默认种子生成随机数:", random.random()) random.seed(10) print ("使用整数 10 种子生成随机数:", random.random()) random.seed(10) print ("使用整数 10 种子生成随机数:", random.random()) random.seed("hello",2) print ("使用字符串种子生成随机数:", random.random()) 以上实例运行后输出结果为: 使用默认种子生成随机数: 0.4424658799775165 使用默认种子生成随机数: 0.11376245995961698 使用整数 10 种子生成随机数: 0.5714025946899135 使用整数 10 种子生成随机数: 0.5714025946899135 使用字符串种子生成随机数: 0.3537754404730722
- shuffle() 函数
描述
shuffle()方法将序列的所有元素随机排序。
语法
以下是 shuffle() 方法的语法:
import random random.shuffle (lst )
注意:shuffle()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
参数
lst -- 可以是一个列表。
返回值
None
实例
以下展示了使用 shuffle() 方法的实例:
#!/usr/bin/python3 import random list = [20, 16, 10, 5] random.shuffle(list) print ("随机排序列表 : ", list) random.shuffle(list) print ("随机排序列表 : ", list) 以上实例运行后输出结果为: 随机排序列表 : [16, 5, 10, 20] 随机排序列表 : [16, 5, 20, 10]
- uniform() 函数
描述
uniform()方法将随机生成下一个实数,它在 [x, y] 范围内。
语法
以下是 uniform() 方法的语法:
import random random.uniform(x, y)
注意:uniform()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
参数
x -- 随机数的最小值,包含该值。
y -- 随机数的最大值,包含该值。
返回值
返回一个浮点数 N,取值范围为如果 x<y 则 x <= N <= y,如果 y<x 则y <= N <= x。
实例
以下展示了使用 uniform() 方法的实例:
实例 #!/usr/bin/python # -*- coding: UTF-8 -*- import random print ("uniform(5, 10) 的随机数为 : ", random.uniform(5, 10)) print ("uniform(7, 14) 的随机数为 : ", random.uniform(7, 14)) 以上实例运行后输出结果为: uniform(5, 10) 的随机数为 : 6.98774810047 uniform(7, 14) 的随机数为 : 12.2243345905 #当然这里是浮点类型,也可以改成整数类型 a=int(random.uniform(10,100))
3.5 三角函数
Python包括以下三角函数:
- acos() 函数
描述
acos()返回x的反余弦弧度值。
语法
以下是 acos() 方法的语法:
import math math.acos(x)
注意:acos()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。
参数
x -- -1到1之间的数值。如果x是大于1,会产生一个错误。
返回值
返回x的反余弦弧度值。
实例
以下展示了使用 acos() 方法的实例:
#!/usr/bin/python import math print ("acos(0.64) : ", math.acos(0.64)) print ("acos(0) : ", math.acos(0)) print ("acos(-1) : ", math.acos(-1)) print ("acos(1) : ", math.acos(1)) 以上实例运行后输出结果为: acos(0.64) : 0.8762980611683406 acos(0) : 1.5707963267948966 acos(-1) : 3.141592653589793 acos(1) : 0.0
- asin() 函数
描述
asin()返回x的反正弦弧度值。
语法
以下是 asin() 方法的语法:
import math math.asin(x)
注意:asin()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。
参数
x : -1 到 1 之间的数值。如果 x 是大于 1,会产生一个错误。
返回值
返回x的反正弦弧度值。
实例
以下展示了使用 asin() 方法的实例:
#!/usr/bin/python3 import math print ("asin(0.64) : ", math.asin(0.64)) print ("asin(0) : ", math.asin(0)) print ("asin(-1) : ", math.asin(-1)) print ("asin(1) : ", math.asin(1)) 以上实例运行后输出结果为: asin(0.64) : 0.694498265626556 asin(0) : 0.0 asin(-1) : -1.5707963267948966 asin(1) : 1.5707963267948966
- atan() 函数
描述
atan()返回x的反正切弧度值。
语法
以下是 atan()方法的语法:
import math math.atan(x)
注意:atan()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。
参数
x -- 一个数值。
返回值
返回x的反正切弧度值。
实例
以下展示了使用 atan() 方法的实例:
#!/usr/bin/python import math print ("atan(0.64) : ", math.atan(0.64)) print ("atan(0) : ", math.atan(0)) print ("atan(10) : ", math.atan(10)) print ("atan(-1) : ", math.atan(-1)) print ("atan(1) : ", math.atan(1)) 以上实例运行后输出结果为: atan(0.64) : 0.5693131911006619 atan(0) : 0.0 atan(10) : 1.4711276743037347 atan(-1) : -0.7853981633974483 atan(1) : 0.7853981633974483
- atan2() 函数
描述
atan2()返回给定的 X 及 Y 坐标值的反正切值。
语法
以下是 atan2() 方法的语法:
import math math.atan2(y, x)
注意:atan2()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。
参数
x -- 一个数值。
y -- 一个数值。
返回值
返回给定的 X 及 Y 坐标值的反正切值。
实例
以下展示了使用 atan2() 方法的实例:
#!/usr/bin/python3 import math print ("atan2(-0.50,-0.50) : ", math.atan2(-0.50,-0.50)) print ("atan2(0.50,0.50) : ", math.atan2(0.50,0.50)) print ("atan2(5,5) : ", math.atan2(5,5)) print ("atan2(-10,10) : ", math.atan2(-10,10)) print ("atan2(10,20) : ", math.atan2(10,20)) 以上实例运行后输出结果为: atan2(-0.50,-0.50) : -2.356194490192345 atan2(0.50,0.50) : 0.7853981633974483 atan2(5,5) : 0.7853981633974483 atan2(-10,10) : -0.7853981633974483 atan2(10,20) : 0.4636476090008061
- cos() 函数
描述
cos()返回x的弧度的余弦值。
语法
以下是 cos()方法的语法:
import math math.cos(x)
注意:cos()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。
参数
x -- 一个数值。
返回值
返回x的弧度的余弦值,-1 到 1 之间。
实例
以下展示了使用 cos() 方法的实例:
#!/usr/bin/python3 import math print ("cos(3) : ", math.cos(3)) print ("cos(-3) : ", math.cos(-3)) print ("cos(0) : ", math.cos(0)) print ("cos(math.pi) : ", math.cos(math.pi)) print ("cos(2*math.pi) : ", math.cos(2*math.pi)) 以上实例运行后输出结果为: cos(3) : -0.9899924966004454 cos(-3) : -0.9899924966004454 cos(0) : 1.0 cos(math.pi) : -1.0 cos(2*math.pi) : 1.0
- hypot() 函数
描述
hypot()返回欧几里德范数 sqrt(x*x + y*y)。
语法
以下是 hypot() 方法的语法:
import math math.hypot(x, y)
注意:hypot()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。
参数
x -- 一个数值。
y -- 一个数值。
返回值
返回欧几里德范数 sqrt(x*x + y*y)。
实例
以下展示了使用 hypot() 方法的实例:
#!/usr/bin/python import math print ("hypot(3, 2) : ", math.hypot(3, 2)) print ("hypot(-3, 3) : ", math.hypot(-3, 3)) print ("hypot(0, 2) : ", math.hypot(0, 2)) 以上实例运行后输出结果为: hypot(3, 2) : 3.605551275463989 hypot(-3, 3) : 4.242640687119285 hypot(0, 2) : 2.0
- sin() 函数
描述
sin()返回的x弧度的正弦值。
语法
以下是 sin() 方法的语法:
import math math.sin(x)
注意:sin()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。
参数
x -- 一个数值。
返回值
返回的x弧度的正弦值,数值在 -1 到 1 之间。
实例
以下展示了使用 sin() 方法的实例:
#!/usr/bin/python3 import math print ("sin(3) : ", math.sin(3)) print ("sin(-3) : ", math.sin(-3)) print ("sin(0) : ", math.sin(0)) print ("sin(math.pi) : ", math.sin(math.pi)) print ("sin(math.pi/2) : ", math.sin(math.pi/2)) 以上实例运行后输出结果为: sin(3) : 0.1411200080598672 sin(-3) : -0.1411200080598672 sin(0) : 0.0 sin(math.pi) : 1.2246467991473532e-16 sin(math.pi/2) : 1.0
- tan() 函数
描述
tan()返回x弧度的正切值。
语法
以下是 tan() 方法的语法:
import math math.tan(x)
注意:tan()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。
参数
x -- 一个数值。
返回值
返回x弧度的正切值,数值在 -1 到 1 之间。
实例
以下展示了使用 tan() 方法的实例:
#!/usr/bin/python3 import math print ("tan(3) : ", math.tan(3)) print ("tan(-3) : ", math.tan(-3)) print ("tan(0) : ", math.tan(0)) print ("tan(math.pi) : ", math.tan(math.pi)) print ("tan(math.pi/2) : ", math.tan(math.pi/2)) print ("tan(math.pi/4) : ", math.tan(math.pi/4)) 以上实例运行后输出结果为: tan(3) : -0.1425465430742778 tan(-3) : 0.1425465430742778 tan(0) : 0.0 tan(math.pi) : -1.2246467991473532e-16 tan(math.pi/2) : 1.633123935319537e+16 tan(math.pi/4) : 0.9999999999999999
- degrees() 函数
描述
degrees()将弧度转换为角度。
语法
以下是 degrees() 方法的语法:
import math math.degrees(x)
注意:degrees()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。
参数
x -- 一个数值。
返回值
返回一个角度值。
实例
以下展示了使用 degrees() 方法的实例:
#!/usr/bin/python3 import math print ("degrees(3) : ", math.degrees(3)) print ("degrees(-3) : ", math.degrees(-3)) print ("degrees(0) : ", math.degrees(0)) print ("degrees(math.pi) : ", math.degrees(math.pi)) print ("degrees(math.pi/2) : ", math.degrees(math.pi/2)) print ("degrees(math.pi/4) : ", math.degrees(math.pi/4)) 以上实例运行后输出结果为: degrees(3) : 171.88733853924697 degrees(-3) : -171.88733853924697 degrees(0) : 0.0 degrees(math.pi) : 180.0 degrees(math.pi/2) : 90.0 degrees(math.pi/4) : 45.0
- radians() 函数
描述
radians()方法将角度转换为弧度。
角度和弧度关系是:2π 弧度 = 360°。从而 1°≈0.0174533 弧度,1 弧度≈57.29578°。
1) 角度转换为弧度公式:弧度=角度÷180×π
2) 弧度转换为角度公式: 角度=弧度×180÷π
语法
以下是 radians() 方法的语法:
import math math.radians(x)
注意:radians()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。
参数
x -- 一个角度数值,默认单位是角度 °。
返回值
返回一个角度的弧度值。
实例
以下展示了使用 radians() 方法的实例:
#!/usr/bin/python3 import math print ("radians(90) : ", math.radians(90)) # 1 弧度等于大概 57.3° print ("radians(45) : ", math.radians(45)) print ("radians(30) : ", math.radians(30)) print ("radians(180) : ", math.radians(180)) # 180 度的弧度为 π print("180 / pi : ", end ="") print (math.radians(180 / math.pi)) 以上实例运行后输出结果为: radians(90) : 1.5707963267948966 radians(45) : 0.7853981633974483 radians(30) : 0.5235987755982988 radians(180) : 3.141592653589793 180 / pi : 1.0
3.6 Python数学常量
4.Python3字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 " )来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。例如:
var1 = 'Hello World!' var2 = "Python Lizexiong"
4.1 Python 访问字符串中的值
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
Python 访问子字符串,可以使用方括号 [] 来截取字符串,字符串的截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
#!/usr/bin/python var1 = 'Hello World!' var2 = "Python Lizexiong" print ("var1[0]: ", var1[0]) print ("var2[1:5]: ", var2[1:5]) 以上实例执行结果: var1[0]: H var2[1:5]: ytho
4.2 Python 字符串更新
你可以截取字符串的一部分并与其他字段拼接,如下实例:
#字符串拼接 #!/usr/bin/python # -*- coding: UTF-8 -*- var1 = 'Hello World!' print ("输出 :- ", var1[:6] + 'Lizexiong!') 以上实例执行结果 输出 :- Hello Lizexiong!
4.3 Python转义字符
在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符。如下表:
4.4 Python字符串运算符
下表实例变量 a 值为字符串 "Hello",b 变量值为 "Python":
#!/usr/bin/python # -*- coding: UTF-8 -*- a = "Hello" b = "Python" print ("a + b 输出结果:", a + b) #万恶的加号,使用加号会在内存中重新申请空间 print ("a * 2 输出结果:", a * 2 ) print ("a[1] 输出结果:", a[1]) print ("a[1:4] 输出结果:", a[1:4]) if( "H" in a) : print ("H 在变量 a 中") else : print ("H 不在变量 a 中") if( "M" not in a) : print ("M 不在变量 a 中") else : print ("M 在变量 a 中") print (r'\n') print (R'\n') 以上程序执行结果为: a + b 输出结果: HelloPython a * 2 输出结果: HelloHello a[1] 输出结果: e a[1:4] 输出结果: ell H 在变量 a 中 M 不在变量 a 中 \n \n
4.5 Python 字符串格式化
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
#!/usr/bin/python print ("My name is %s and weight is %d kg!" % ('LiZeXiong', 62)) 以上实例输出结果: My name is LiZeXiong and weight is 62 kg! 但是如果python后面格式化函数方法,就需要有点小小改动,这个需要特别注意,比如时间模块。如果还使用%就会报错 import time print ("time.localtime() : %s", % time.localtime()) 以上实例输出结果为: time.localtime() : %s time.struct_time(tm_year=2022, tm_mon=4, tm_mday=26, tm_ho ur=8, tm_min=55, tm_sec=46, tm_wday=1, tm_yday=116, tm_isdst=0)
python字符串格式化符号:
格式化操作符辅助指令:
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
4.6 Python三引号
python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。实例如下
#!/usr/bin/python3 para_str = """这是一个多行字符串的实例 多行字符串可以使用制表符 TAB ( \t )。 也可以使用换行符 [ \n ]。 """ print (para_str) 以上实例执行结果为: 这是一个多行字符串的实例 多行字符串可以使用制表符 TAB ( )。 也可以使用换行符 [ ]。
三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。
一个典型的用例是,当你需要一块HTML或者SQL时,这时用字符串组合,特殊字符串转义将会非常的繁琐。
errHTML = ''' <HTML><HEAD><TITLE> Friends CGI Demo</TITLE></HEAD> <BODY><H3>ERROR</H3> <B>%s</B><P> <FORM><INPUT TYPE=button VALUE=Back ONCLICK="window.history.back()"></FORM> </BODY></HTML> ''' cursor.execute(''' CREATE TABLE users ( login VARCHAR(8), uid INTEGER, prid INTEGER) ''')
4.7 f-string
f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
之前我们习惯用百分号 (%):
>>> name = 'Lizexiong' >>> 'Hello %s' % name 'Hello Lizexiong'
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:
>>> name = 'Lizexiong' >>> f'Hello {name}' # 替换变量 'Hello Lizexiong' >>> f'{1+2}' # 使用表达式 '3' >>> w = {'name': 'Lizexiong', 'url': 'www.Lizexiong.com'} >>> f'{w["name"]}: {w["url"]}' 'Lizexiong: www.Lizexiong.com'
用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。
在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果:
>>> x = 1 >>> print(f'{x+1}') # Python 3.6 2 >>> x = 1 >>> print(f'{x+1=}') # Python 3.8 x+1=2
4.8 Python 的字符串内建函数
- capitalize()方法
描述
Python capitalize() 将字符串的第一个字母变成大写,其他字母变小写。对于 8 位字节编码需要根据本地环境。
语法
capitalize()方法语法:
str.capitalize()
参数
无。
返回值
该方法返回一个首字母大写的字符串。
实例
以下实例展示了capitalize()方法的实例:
#!/usr/bin/python3 str = "this is string Example From huawei....wow!!!" print ("str.capitalize() : ", str.capitalize()) 以上实例输出结果如下: str.capitalize() : This is string example from huawei....wow!!!
- center()方法
描述
center() 方法返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
语法
center()方法语法:
str.center(width[, fillchar])
参数
width -- 字符串的总宽度。
fillchar -- 填充字符。
返回值
返回一个指定的宽度 width 居中的字符串,如果 width 小于字符串宽度直接返回字符串,否则使用 fillchar 去填充。
实例
以下实例展示了center()方法的实例:
>>> str = 'lizexiong' >>> str.center(20,'*') '*****lizexiong******' >>> str.center(20) ' lizexiong ' >>>
- count()方法
描述
Python count() 方法用于统计字符串里某个字符或子字符串出现的次数。可选参数为在字符串搜索的开始与结束位置。
语法
count()方法语法:
str.count(sub, start= 0,end=len(string))
参数
sub -- 搜索的子字符串
start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
返回值
该方法返回子字符串在字符串中出现的次数。
实例
以下实例展示了count()方法的实例:
#!/usr/bin/python str = "this is string example....wow!!!"; sub = "i"; print ("str.count(sub, 4, 40) : ", str.count(sub, 4, 40)) sub = "wow"; print ("str.count(sub) : ", str.count(sub)) 以上实例输出结果如下: str.count(sub, 4, 40) : 2 str.count(sub) : 1
- bytes.decode()方法
描述
decode() 方法以指定的编码格式解码 bytes 对象。默认编码为 'utf-8'。
语法
decode()方法语法:
bytes.decode(encoding="utf-8", errors="strict")
参数
encoding -- 要使用的编码,如"UTF-8"。
errors -- 设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。
返回值
该方法返回解码后的字符串。
实例
以下实例展示了decode()方法的实例:
#!/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'\xe6\x9d\x8e\xe6\xb3\xbd\xe9\x9b\x84' GBK 编码: b'\xc0\xee\xd4\xf3\xd0\xdb' UTF-8 解码: 李泽雄 GBK 解码: 李泽雄
- endswith()方法
描述
Python endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。
语法
endswith()方法语法:
str.endswith(suffix[, start[, end]])
参数
suffix -- 该参数可以是一个字符串或者是一个元素。
start -- 字符串中的开始位置。
end -- 字符中结束位置。
返回值
如果字符串含有指定的后缀返回True,否则返回False。
实例
以下实例展示了endswith()方法的实例:
#!/usr/bin/python str = "this is string example....wow!!!"; suffix = "wow!!!"; print (str.endswith(suffix)) print (str.endswith(suffix,20)) suffix = "is"; print (str.endswith(suffix, 2, 4)) print (str.endswith(suffix, 2, 6)) 以上实例输出结果如下: True True True False
- expandtabs()方法
描述
expandtabs() 方法把字符串中的 tab 符号 \t 转为空格,tab 符号 \t 默认的空格数是 8,在第 0、8、16...等处给出制表符位置,如果当前位置到开始位置或上一个制表符位置的字符数不足 8 的倍数则以空格代替。
语法
expandtabs()方法语法:
str.expandtabs(tabsize=8)
参数
tabsize -- 指定转换字符串中的 tab 符号('\t')转为空格的字符数。
返回值
该方法返回字符串中的 tab 符号('\t')转为空格后生成的新字符串。
实例
以下实例展示了expandtabs()方法的实例:
#!/usr/bin/python # -*- coding: UTF-8 -*- str = "zxiong\t12345\tabc" print('原始字符串: {}'.format(str)) # 默认 8 个空格 # zxiong 有 6 个字符,后面的 \t 填充 2 个空格 # 12345 有 5 个字符,后面的 \t 填充 3 个空格 print('替换 \\t 符号: {}'.format(str.expandtabs())) # 2 个空格 # zxiong 有 6 个字符,刚好是 2 的 3 倍,后面的 \t 填充 2 个空格 # 12345 有 5 个字符,不是 2 的倍数,后面的 \t 填充 1 个空格 print('使用 2 个空格替换 \\t 符号: {}'.format(str.expandtabs(2))) # 3 个空格 print('使用 3 个空格: {}'.format(str.expandtabs(3))) # 4 个空格 print('使用 4 个空格: {}'.format(str.expandtabs(4))) # 5 个空格 print('使用 5 个空格: {}'.format(str.expandtabs(5))) # 6 个空格 print('使用 6 个空格: {}'.format(str.expandtabs(6))) 以上实例输出结果如下: 原始字符串: zxiong 12345 abc 替换 \t 符号: zxiong 12345 abc 使用 2 个空格替换 \t 符号: zxiong 12345 abc 使用 3 个空格: zxiong 12345 abc 使用 4 个空格: zxiong 12345 abc 使用 5 个空格: zxiong 12345 abc 使用 6 个空格: zxiong 12345 abc
- find()方法
描述
find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。
语法
find()方法语法:
str.find(str, beg=0, end=len(string))
参数
str -- 指定检索的字符串
beg -- 开始索引,默认为0。
end -- 结束索引,默认为字符串的长度。
返回值
如果包含子字符串返回开始的索引值,否则返回-1。
实例
以下实例展示了find()方法的实例:
实例1 #!/usr/bin/python str1 = "this is string example....wow!!!"; str2 = "exam"; print (str1.find(str2)) print (str1.find(str2, 10)) print (str1.find(str2, 40)) 以上实例输出结果如下: 15 15 -1 实例2 >>>info = 'abca' >>> print (info.find('a')) # 从下标0开始,查找在字符串里第一个出现的子串,返回结果:0 0 >>> print (info.find('a',1)) # 从下标1开始,查找在字符串里第一个出现的子串:返回结果3 3 >>> print (info.find('3')) # 查找不到返回-1 -1 >>>
- index()方法
描述
Python index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。
语法
index()方法语法:
str.index(str, beg=0, end=len(string))
参数
str -- 指定检索的字符串
beg -- 开始索引,默认为0。
end -- 结束索引,默认为字符串的长度。
返回值
如果包含子字符串返回开始的索引值,否则抛出异常。
实例
以下实例展示了index()方法的实例:
#!/usr/bin/python3 str1 = "this is string example....wow!!!"; str2 = "exam"; print (str1.index(str2)) print (str1.index(str2, 10)) print (str1.index(str2, 40)) 以上实例输出结果如下: 15 15 Traceback (most recent call last): File "test.py", line 8, in print str1.index(str2, 40); ValueError: substring not found shell returned 1
- isalnum()方法
描述
Python isalnum() 方法检测字符串是否由字母和数字组成。
语法
isalnum()方法语法:
str.isalnum()
参数
无。
返回值
如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
实例
以下实例展示了isalnum()方法的实例:
#!/usr/bin/python # -*- coding: UTF-8 -*- str = "this2009"; # 字符中没有空格 print (str.isalnum()) str = "this is string example....wow!!!"; print (str.isalnum()) 以上实例输出结果如下: True False
- isalpha()方法
描述
Python isalpha() 方法检测字符串是否只由字母或文字组成。
语法
isalpha()方法语法:
str.isalpha()
参数
无。
返回值
如果字符串至少有一个字符并且所有字符都是字母或文字则返回 True,否则返回 False。
实例
以下实例展示了isalpha()方法的实例:
#!/usr/bin/python # coding=utf-8 str = "lizexiong"; print (str.isalpha()) str = "lizexiong华为"; print (str.isalpha()) str = "this is string example....wow!!!"; print (str.isalpha()) 以上实例输出结果如下: True True #这里在python2中会变成false False
- isdigit()方法
描述
Python isdigit() 方法检测字符串是否只由数字组成。
语法
isdigit()方法语法:
str.isdigit()
参数
无。
返回值
如果字符串只包含数字则返回 True 否则返回 False。
实例
以下实例展示了isdigit()方法的实例:
#!/usr/bin/python3 str = "123456"; # Only digit in this string print (str.isdigit()); str = "this is string example....wow!!!"; print (str.isdigit()); 以上实例输出结果如下: True False
- islower()方法
描述
Python islower() 方法检测字符串是否由小写字母组成。
语法
islower()方法语法:
str.islower()
参数
无。
返回值
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
实例
以下实例展示了islower()方法的实例:
#!/usr/bin/python str = "THIS is string example....wow!!!"; print (str.islower()); str = "this is string example....wow!!!"; print (str.islower()); 以上实例输出结果如下: False True
- isnumeric()方法
描述
isnumeric() 方法检测字符串是否只由数字组成,数字可以是: Unicode 数字,全角数字(双字节),罗马数字,汉字数字。
指数类似 ² 与分数类似 ½ 也属于数字。
# s = '½' s = '\u00BD'
语法
isnumeric()方法语法:
str.isnumeric()
参数
无。
返回值
如果字符串中只包含数字字符,则返回 True,否则返回 False
实例
以下实例展示了isnumeric()方法的实例:
#!/usr/bin/python str = u"this2017"; print (str.isnumeric()); str = u"23443434"; print (str.isnumeric()); 以上实例输出结果如下: False True
Unicode 数字:
#!/usr/bin/python3 #s = '²3455' s = '\u00B23455' print(s.isnumeric()) # s = '½' s = '\u00BD' print(s.isnumeric()) a = "\u0030" #unicode for 0 print(a.isnumeric()) b = "\u00B2" #unicode for ² print(b.isnumeric()) c = "10km2" print(c.isnumeric()) 以上实例输出结果如下: True True True True False
- isspace()方法
描述
Python isspace() 方法检测字符串是否只由空格组成。
语法
isspace()方法语法:
str.isspace()
参数
无。
返回值
如果字符串中只包含空格,则返回 True,否则返回 False.
实例
以下实例展示了isspace()方法的实例:
#!/usr/bin/python3 str = " "; print (str.isspace()); str = "This is string example....wow!!!"; print (str.isspace()); 以上实例输出结果如下: True False
- istitle()方法
描述
Python istitle() 方法检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。
语法
istitle()方法语法:
str.istitle()
参数
无。
返回值
如果字符串中所有的单词拼写首字母是否为大写,且其他字母为小写则返回 True,否则返回 False.
实例
以下实例展示了istitle()方法的实例:
#!/usr/bin/python3 str = "This Is String Example...Wow!!!"; print (str.istitle()); str = "This is string example....wow!!!"; print (str.istitle()); 以上实例输出结果如下: True False
- isupper()方法
描述
Python isupper() 方法检测字符串中所有的字母是否都为大写。
语法
isupper()方法语法:
str.isupper()
参数
无。
返回值
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
实例
以下实例展示了 isupper() 方法的实例:
#!/usr/bin/python3 str = "THIS IS STRING EXAMPLE....WOW!!!"; print ( str.isupper() ); str = "THIS is string example....wow!!!"; print ( str.isupper() ); 以上实例输出结果如下: True False
- join()方法
描述
Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
语法
join()方法语法:
str.join(sequence)
参数
sequence -- 要连接的元素序列。
返回值
返回通过指定字符连接序列中元素后生成的新字符串。
实例
以下实例展示了join()的使用方法:
#!/usr/bin/python3 str = "-"; seq = ("a", "b", "c"); # 字符串序列 print (str.join( seq )); 以上实例输出结果如下: a-b-c
- len()方法
描述
Python len() 方法返回对象(字符、列表、元组等)长度或项目个数。
语法
len()方法语法:
len( s )
参数
s -- 对象。
返回值
返回对象长度。
实例
以下实例展示了 len() 的使用方法:
>>> str = "lizexiong" >>> len(str) 9 >>> l = [1,2,3,4,5] >>> len(l) 5
- ljust()方法
描述
Python ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。
语法
ljust()方法语法:
str.ljust(width[, fillchar])
参数
width -- 指定字符串长度。
fillchar -- 填充字符,默认为空格。
返回值
返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。
实例
以下实例展示了ljust()的使用方法:
#!/usr/bin/python str = "this is string example....wow!!!"; print (str.ljust(50, '0')); 以上实例输出结果如下: this is string example....wow!!!000000000000000000
- lower()方法
描述
Python lower() 方法转换字符串中所有大写字符为小写。
语法
lower()方法语法:
str.lower()
参数
无。
返回值
返回将字符串中所有大写字符转换为小写后生成的字符串。
实例
以下实例展示了lower()的使用方法:
#!/usr/bin/python3 str = "THIS IS STRING EXAMPLE....WOW!!!"; print (str.lower()); 以上实例输出结果如下: this is string example....wow!!!
- lstrip()方法
描述
Python lstrip() 方法用于截掉字符串左边的空格或指定字符。
语法
lstrip()方法语法:
str.lstrip([chars])
参数
chars --指定截取的字符。
返回值
返回截掉字符串左边的空格或指定字符后生成的新字符串。
实例
以下实例展示了lstrip()的使用方法:
#!/usr/bin/python3 str = " this is string example....wow!!! "; print (str.lstrip()); str = "88888888this is string example....wow!!!8888888"; print (str.lstrip('8')); 以上实例输出结果如下: this is string example....wow!!! this is string example....wow!!!8888888
- maketrans() 方法
描述
maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
两个字符串的长度必须相同,为一一对应的关系。
注:Python3.4 已经没有 string.maketrans() 了,取而代之的是内建函数: bytearray.maketrans()、bytes.maketrans()、str.maketrans() 。
语法
maketrans()方法语法:
string.maketrans(x[, y[, z]])
参数
x -- 必需,字符串中要替代的字符组成的字符串。
y -- 可选,相应的映射字符的字符串。
z -- 可选,要删除的字符。
返回值
返回字符串转换后生成的新字符串。
实例
以下实例展示了使用 maketrans() 方法将所有元音字母转换为指定的数字:
#!/usr/bin/python3 # 字母 R 替换为 N txt = "Lizexiong!" mytable = txt.maketrans("L", "X") print(txt.translate(mytable)) # 使用字符串设置要替换的字符,一一对应 intab = "aeiou" outtab = "12345" trantab = str.maketrans(intab, outtab) str = "this is string example....wow!!!" print (str.translate(trantab)) 以上实例输出结果如下: Xizexiong! th3s 3s str3ng 2x1mpl2....w4w!!!
设置要删除的字符参数:
#!/usr/bin/python3 txt = "Google Lizexiong Taobao!" x = "mSa" y = "eJo" z = "odnght" # 设置删除的字符 mytable = txt.maketrans(x, y, z) print(txt.translate(mytable)) 以上实例输出结果如下: Gle Lizexi Tobo!
- max()方法
描述
Python max() 方法返回字符串中最大的字母。
语法
max()方法语法:
max(str)
参数
str -- 字符串。
返回值
返回字符串中最大的字母。
实例
以下实例展示了max()函数的使用方法:
#!/usr/bin/python3 str = "this is really a string example....wow!!!"; print ("Max character: " + max(str)); str = "this is a string example....wow!!!"; print ("Max character: " + max(str)); 以上实例输出结果如下: Max character: y Max character: x
- min()方法
描述
Python min() 方法返回字符串中最小的字母。
语法
min()方法语法:
min(str)
参数
str -- 字符串。
返回值
返回字符串中最小的字母。
实例
以下实例展示了min()函数的使用方法:
#!/usr/bin/python str = "this-is-real-string-example....wow!!!"; print ("Min character: " + min(str)); str = "this-is-a-string-example....wow!!!"; print ("Min character: " + min(str)); 以上实例输出结果如下: Min character: ! Min character: !
- replace()方法
描述
Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
语法
replace()方法语法:
str.replace(old, new[, max])
参数
old -- 将被替换的子字符串。
new -- 新字符串,用于替换old子字符串。
max -- 可选字符串, 替换不超过 max 次
返回值
返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次。
实例
以下实例展示了replace()函数的使用方法:
#!/usr/bin/python str = "this is string example....wow!!! this is really string"; print (str.replace("is", "was")); print (str.replace("is", "was", 3)); 以上实例输出结果如下: thwas was string example....wow!!! thwas was really string thwas was string example....wow!!! thwas is really string
- rfind()方法
描述
Python rfind() 返回字符串最后一次出现的位置,如果没有匹配项则返回 -1。
语法
rfind()方法语法:
str.rfind(str, beg=0 end=len(string))
参数
str -- 查找的字符串
beg -- 开始查找的位置,默认为 0
end -- 结束查找位置,默认为字符串的长度。
返回值
返回字符串最后一次出现的位置,如果没有匹配项则返回-1。
实例
以下实例展示了rfind()函数的使用方法:
#!/usr/bin/python3 str = "this is really a string example....wow!!!"; substr = "is"; print (str.rfind(substr)); print (str.rfind(substr, 0, 10)); print (str.rfind(substr, 10, 0)); print (str.find(substr)); print (str.find(substr, 0, 10)); print (str.find(substr, 10, 0)); 以上实例输出结果如下: 5 5 -1 2 2 -1
- rindex()方法
描述
Python rindex() 返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间。
语法
rindex()方法语法:
str.rindex(str, beg=0 end=len(string))
参数
str -- 查找的字符串
beg -- 开始查找的位置,默认为0
end -- 结束查找位置,默认为字符串的长度。
返回值
返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常。
实例
以下实例展示了rindex()函数的使用方法:
#!/usr/bin/python3 str1 = "this is string example....wow!!!"; str2 = "is"; print (str1.rindex(str2)); print (str1.rindex(str2,30)); 以上实例输出结果如下: 5 Traceback (most recent call last): File "C:/Users/Administrator/Desktop/python3/day2/exercise.py", line 1420, in <module> print (str1.rindex(str2,30)); ValueError: substring not found
- rjust()方法
描述
Python rjust() 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。
语法
rjust()方法语法:
str.rjust(width[, fillchar])
参数
width -- 指定填充指定字符后中字符串的总长度.
fillchar -- 填充的字符,默认为空格。
返回值
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串
实例
以下实例展示了rjust()函数的使用方法:
#!/usr/bin/python3 str = "this is string example....wow!!!"; print (str.rjust(50, '0')); 以上实例输出结果如下: 000000000000000000this is string example....wow!!!
- rstrip()方法
描述
Python rstrip() 删除 string 字符串末尾的指定字符,默认为空白符,包括空格、换行符、回车符、制表符。
语法
rstrip()方法语法:
str.rstrip([chars])
参数
chars -- 指定删除的字符(默认为空白符)
返回值
返回删除 string 字符串末尾的指定字符后生成的新字符串。
实例
以下实例展示了 rstrip() 函数的使用方法:
#!/usr/bin/python3 random_string = 'this is good ' # 字符串末尾的空格会被删除 print(random_string.rstrip()) # 'si oo' 不是尾随字符,因此不会删除任何内容 print(random_string.rstrip('si oo')) # 在 'sid oo' 中 'd oo' 是尾随字符,'ood' 从字符串中删除 print(random_string.rstrip('sid oo')) # 'm/' 是尾随字符,没有找到 '.' 号的尾随字符, 'm/' 从字符串中删除 website = 'www.lizexiong.com/' print(website.rstrip('m/.')) # 移除逗号(,)、点号(.)、字母 s、q 或 w,这几个都是尾随字符 txt = "banana,,,,,ssqqqww....." x = txt.rstrip(",.qsw") print(x) # 删除尾随字符 * str = "*****this is string example....wow!!!*****" print (str.rstrip('*')) print(x) 以上实例输出结果如下: this is good this is good this is g www.lizexiong.co banana *****this is string example....wow!!! banana
- split()方法
描述
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
语法
split() 方法语法:
str.split(str="", num=string.count(str)).
参数
str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num -- 分割次数。默认为 -1, 即分隔所有。
返回值
返回分割后的字符串列表。
实例
以下实例展示了 split() 函数的使用方法:
实例1 #!/usr/bin/python # -*- coding: UTF-8 -*- str = "Line1-abcdef \nLine2-abc \nLine4-abcd"; print (str.split( )); # 以空格为分隔符,包含 \n print (str.split(' ', 1 )); # 以空格为分隔符,分隔成两个 以上实例输出结果如下: ['Line1-abcdef', 'Line2-abc', 'Line4-abcd'] ['Line1-abcdef', '\nLine2-abc \nLine4-abcd'] 以下实例以 # 号为分割符,指定第二个参数为 1,返回两个参数列表。 实例2 #!/usr/bin/python # -*- coding: UTF-8 -*- txt = "Google#lizexiong#Taobao#Facebook" # 第二个参数为 1,返回两个参数列表 x = txt.split("#", 1) print (x) 以上实例输出结果如下: ['Google', 'lizexiong#Taobao#Facebook'] 实例3 #!/usr/bin/python # -*- coding: UTF-8 -*- import re a='Beautiful, is; better*than\nugly' # 四个分隔符为:, ; * \n x= re.split(',|; |\*|\n',a) print(x) 以上实例输出结果如下: ['Beautiful', ' is', 'better', 'than', 'ugly'] 实例4 以下演示以 + 和 _ 符号为分隔符: # -*- coding: utf-8 -*- str = "Chris_iven+Chris_jack+Chris_lusy" print (str.split("+")) print (str.split("_")) 输出结果为: ['Chris_iven', 'Chris_jack', 'Chris_lusy'] ['Chris', 'iven+Chris', 'jack+Chris', 'lusy']
- splitlines()方法
描述
Python splitlines() 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
语法
splitlines()方法语法:
str.splitlines([keepends])
参数
keepends -- 在输出结果里是否保留换行符('\r', '\r\n', \n'),默认为 False,不包含换行符,如果为 True,则保留换行符。
返回值
返回一个包含各行作为元素的列表。
实例
以下实例展示了splitlines()函数的使用方法:
#!/usr/bin/python3 str1 = 'ab c\n\nde fg\rkl\r\n' print (str1.splitlines()) str2 = 'ab c\n\nde fg\rkl\r\n' print (str2.splitlines(True)) 以上实例输出结果如下: ['ab c', '', 'de fg', 'kl'] ['ab c\n', '\n', 'de fg\r', 'kl\r\n']
- startswith()方法
描述
Python startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
语法
startswith()方法语法:
str.startswith(str, beg=0,end=len(string));
参数
str -- 检测的字符串。
strbeg -- 可选参数用于设置字符串检测的起始位置。
strend -- 可选参数用于设置字符串检测的结束位置。
返回值
如果检测到字符串则返回True,否则返回False。
实例
以下实例展示了startswith()函数的使用方法:
#!/usr/bin/python3 str = "this is string example....wow!!!" print (str.startswith( 'this' )) # 字符串是否以 this 开头 print (str.startswith( 'string', 8 )) # 从第九个字符开始的字符串是否以 string 开头 print (str.startswith( 'this', 2, 4 )) # 从第2个字符开始到第四个字符结束的字符串是否以 this 开头 以上实例输出结果如下: True True False
- strip()方法
描述
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
语法
strip()方法语法:
str.strip([chars]);
参数
chars -- 移除字符串头尾指定的字符序列。
返回值
返回移除字符串头尾指定的字符生成的新字符串。
实例
以下实例展示了strip()函数的使用方法:
实例1 #!/usr/bin/python3 str = "00000003210lizexiong01230000000"; print (str.strip( '0' )); # 去除首尾字符 0 str2 = " lizexiong "; # 去除首尾空格 print (str2.strip()); 以上实例输出结果如下: 3210lizexiong0123 lizexiong 从结果上看,可以注意到中间部分的字符并未删除。 以上下例演示了只要头尾包含有指定字符序列中的字符就删除: 实例2 #!/usr/bin/python # -*- coding: UTF-8 -*- str = "123abclizexiong321" print (str.strip( '12' )) # 字符序列为 12 以上实例输出结果如下: 3abclizexiong3
- swapcase()方法
描述
Python swapcase() 方法用于对字符串的大小写字母进行转换,即将大写字母转换为小写字母,小写字母会转换为大写字母。
语法
swapcase() 方法语法:
str.swapcase();
参数
NA。
返回值
返回大小写字母转换后生成的新字符串。
实例
以下实例展示了 swapcase() 函数的使用方法:
#!/usr/bin/python str = "LIZEXIONG!!!"; print ( str.swapcase() ); str = "lizexiong!!!"; print ( str.swapcase() ); str = "abCDE--LiZeXiong!!!"; print ( str.swapcase() ); 以上实例输出结果如下: lizexiong!!! LIZEXIONG!!! ABcde--lIzExIONG!!!
- title()方法
描述
Python title() 方法返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())。
语法
title()方法语法:
str.title();
参数
NA。
返回值
返回"标题化"的字符串,就是说所有单词都是以大写开始。
实例
以下实例展示了 title()函数的使用方法:
#!/usr/bin/python3 str = "this is string example....wow!!!"; print (str.title()); 以上实例输出结果如下: This Is String Example....Wow!!!
- translate()方法
描述
translate() 方法根据参数 table 给出的表(包含 256 个字符)转换字符串的字符,要过滤掉的字符放到 deletechars 参数中。
语法
translate()方法语法:
str.translate(table)
bytes.translate(table[, delete])
bytearray.translate(table[, delete])
参数
table -- 翻译表,翻译表是通过maketrans()方法转换而来。
deletechars -- 字符串中要过滤的字符列表。
返回值
返回翻译后的字符串,若给出了 delete 参数,则将原来的bytes中的属于delete的字符删除,剩下的字符要按照table中给出的映射来进行映射 。
实例
以下实例展示了 translate()函数的使用方法:
实例1 #!/usr/bin/python3 from string import maketrans # 引用 maketrans 函数。 intab = "aeiou" outtab = "12345" trantab = maketrans(intab, outtab) str = "this is string example....wow!!!"; print (str.translate(trantab)); 以上实例输出结果如下: th3s 3s str3ng 2x1mpl2....w4w!!! 以下实例演示如何过滤掉的字符 o: 实例2(Python 3.0+) #!/usr/bin/python # 制作翻译表 bytes_tabtrans = bytes.maketrans(b'abcdefghijklmnopqrstuvwxyz', b'ABCDEFGHIJKLMNOPQRSTUVWXYZ') # 转换为大写,并删除字母o print(b'lizexiong'.translate(bytes_tabtrans, b'o')) 以上实例输出结果: b'LIZEXING'
- upper()方法
描述
Python upper() 方法将字符串中的小写字母转为大写字母。
语法
upper()方法语法:
str.upper()
参数
NA。
返回值
返回小写字母转为大写字母的字符串。
实例
以下实例展示了 upper()函数的使用方法:
#!/usr/bin/python str = "this is string example....wow!!!"; print ("str.upper() : ", str.upper()) 以上实例输出结果如下: str.upper() : THIS IS STRING EXAMPLE....WOW!!!
- zfill()方法
描述
Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。
语法
zfill()方法语法:
str.zfill(width)
参数
width -- 指定字符串的长度。原字符串右对齐,前面填充0。
返回值
返回指定长度的字符串。
实例
以下实例展示了 zfill()函数的使用方法:
#!/usr/bin/python str = "this is string example....wow!!!"; print (str.zfill(40)); print (str.zfill(50)); 以上实例输出结果如下: 00000000this is string example....wow!!! 000000000000000000this is string example....wow!!! #基本跟 string.rjust(width,'0') 输出结果一样
- isdecimal()方法
描述
Python isdecimal() 方法检查字符串是否只包含十进制字符。
语法
isdecimal()方法语法:
str.isdecimal()
参数
无
返回值
True - 如果字符串中的所有字符都是十进制字符。
False - 至少一个字符不是十进制字符。
实例
以下实例展示了 isdecimal()函数的使用方法:
#!/usr/bin/python3 str = "lizexiong2022" print (str.isdecimal()) str = "23443434" print (str.isdecimal()) 以上实例输出结果如下: False True
5.Python3列表
序列是 Python 中最基本的数据结构。
序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。
Python 有 6 个序列的内置类型,但最常见的是列表和元组。
列表都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python 已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
list1 = ['Google', 'Lizexiong', 1997, 2000] list2 = [1, 2, 3, 4, 5 ] list3 = ["a", "b", "c", "d"] list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
5.1 访问列表中的值
与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。
通过索引列表可以进行截取、组合等操作。
#!/usr/bin/python3 list = ['red', 'green', 'blue', 'yellow', 'white', 'black'] print( list[0] ) print( list[1] ) print( list[2] ) 以上实例输出结果: red green blue
索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。
#!/usr/bin/python3 list = ['red', 'green', 'blue', 'yellow', 'white', 'black'] print( list[-1] ) print( list[-2] ) print( list[-3] ) 以上实例输出结果: black white yellow
使用下标索引来访问列表中的值,同样你也可以使用方括号 [] 的形式截取字符,如下所示:
#!/usr/bin/python3 nums = [10, 20, 30, 40, 50, 60, 70, 80, 90] print(nums[0:4]) 以上实例输出结果: [10, 20, 30, 40]
使用负数索引值截取:
#!/usr/bin/python3 list = ['Google', 'Lizexiong', "Zhihu", "Taobao", "Wiki"] # 读取第二位 print ("list[1]: ", list[1]) # 从第二位开始(包含)截取到倒数第二位(不包含) print ("list[1:-2]: ", list[1:-2]) 以上实例输出结果: list[1]: Lizexiong list[1:-2]: ['Lizexiong', 'Zhihu']
5.2 更新列表
你可以对列表的数据项进行修改或更新,你也可以使用 append() 方法来添加列表项,如下所示:
#!/usr/bin/python3 list = ['Google', 'Lizexiong', 1997, 2000] print ("第三个元素为 : ", list[2]) list[2] = 2001 print ("更新后的第三个元素为 : ", list[2]) list1 = ['Google', 'Lizexiong', 'Taobao'] list1.append('Baidu') print ("更新后的列表 : ", list1) 注意:我们会在接下来的章节讨论 append() 方法的使用。 以上实例输出结果: 第三个元素为 : 1997 更新后的第三个元素为 : 2001 更新后的列表 : ['Google', 'Lizexiong', 'Taobao', 'Baidu']
5.3 删除列表元素
可以使用 del 语句来删除列表的的元素,如下实例:
#!/usr/bin/python3 list = ['Google', 'Lizexiong', 1997, 2000] print ("原始列表 : ", list) del list[2] print ("删除第三个元素 : ", list) 以上实例输出结果: 原始列表 : ['Google', 'Lizexiong', 1997, 2000] 删除第三个元素 : ['Google', 'Lizexiong', 2000]
5.4 Python列表脚本操作符
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
如下所示:
5.5 Python列表截取与拼接
Python的列表截取与字符串操作类型,如下所示:
L=['Google', 'Lizexiong', 'Taobao']
>>>L=['Google', 'Lizexiong', 'Taobao'] >>> L[2] 'Taobao' >>> L[-2] 'Lizexiong' >>> L[1:] ['Lizexiong', 'Taobao'] >>>
列表还支持拼接操作:
>>>squares = [1, 4, 9, 16, 25] >>> squares += [36, 49, 64, 81, 100] >>> squares [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] >>>
5.6 嵌套列表
使用嵌套列表即在列表里创建其它列表,例如:
>>>a = ['a', 'b', 'c'] >>> n = [1, 2, 3] >>> x = [a, n] >>> x [['a', 'b', 'c'], [1, 2, 3]] >>> x[0] ['a', 'b', 'c'] >>> x[0][1] 'b'
5.7 Python列表函数
Python包含以下函数:
- List len()方法
描述
len() 方法返回列表元素个数。
语法
len()方法语法:
len(list)
参数
list -- 要计算元素个数的列表。
返回值
返回列表元素个数。
实例
以下实例展示了 len()函数的使用方法:
#!/usr/bin/python list1, list2 = [123, 'xyz', 'zara'], [456, 'abc'] print ("First list length : ", len(list1)) print ("Second list length : ", len(list2)) 以上实例输出结果如下: First list length : 3 Second lsit length : 2
- List max()方法
描述
max() 方法返回列表元素中的最大值。
语法
max()方法语法:
max(list)
参数
list -- 要返回最大值的列表。
返回值
返回列表元素中的最大值。
实例
以下实例展示了 max()函数的使用方法:
#!/usr/bin/python list1, list2 = ['123', 'xyz', 'zara', 'abc'], [456, 700, 200] print ("Max value element : ", max(list1)) print ("Max value element : ", max(list2)) 以上实例输出结果如下: Max value element : zara Max value element : 700 #这里有很重要的一点,看到123,用引号标识起来,是因为只能比较同类型的值,如果是str和int,max函数会报错。
- List min()方法
描述
min() 方法返回列表元素中的最小值。
语法
min()方法语法:
min(list)
参数
list -- 要返回最小值的列表。
返回值
返回列表元素中的最小值。
实例
以下实例展示了 min()函数的使用方法:
#!/usr/bin/python list1, list2 = [123, 'xyz', 'zara', 'abc'], [456, 700, 200] print ("min value element : ", min(list1)) print ("min value element : ", min(list2)) 以上实例输出结果如下: min value element : 123 min value element : 200
- List list()方法
描述
list() 方法用于将元组转换为列表。
注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。
语法
list()方法语法:
list( seq )
参数
seq -- 要转换为列表的元组或字符串。
返回值
返回列表。
实例
以下实例展示了 list() 函数的使用方法:
#!/usr/bin/python3 aTuple = (123, 'Google', 'Lizexiong', 'Taobao') list1 = list(aTuple) print ("列表元素 : ", list1) str="Hello World" list2=list(str) print ("列表元素 : ", list2) 以上实例输出结果如下: 列表元素 : [123, 'Google', 'Lizexiong', 'Taobao'] 列表元素 : ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
5.8 Python列表方法
Python包含以下方法:
- List append()方法
描述
append() 方法用于在列表末尾添加新的对象。
语法
append()方法语法:
list.append(obj)
参数
obj -- 添加到列表末尾的对象。
返回值
该方法无返回值,但是会修改原来的列表。
实例
以下实例展示了 append()函数的使用方法:
#!/usr/bin/python3 aList = [123, 'xyz', 'zara', 'abc']; aList.append( 2017 ); print ("Updated List : ", aList) 以上实例输出结果如下: Updated List : [123, 'xyz', 'zara', 'abc', 2017]
- List count()方法
描述
count() 方法用于统计某个元素在列表中出现的次数。
语法
count()方法语法:
list.count(obj)
参数
obj -- 列表中统计的对象。
返回值
返回元素在列表中出现的次数。
实例
以下实例展示了 count()函数的使用方法:
#!/usr/bin/python3 aList = [123, 'xyz', 'zara', 'abc', 123]; print ("Count for 123 : ", aList.count(123)) print ("Count for zara : ", aList.count('zara')) 以上实例输出结果如下: Count for 123 : 2 Count for zara : 1
- List extend()方法
描述
extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
语法
extend()方法语法:
list.extend(seq)
参数
seq -- 元素列表,可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾。
返回值
该方法没有返回值,但会在已存在的列表中添加新的列表内容。
实例
以下实例展示了 extend()函数的使用方法:
#!/usr/bin/python3 list1 = ['Google', 'Lizexiong', 'Taobao'] list2=list(range(5)) # 创建 0-4 的列表 list1.extend(list2) # 扩展列表 print ("扩展后的列表:", list1) 以上实例输出结果如下: 扩展后的列表: ['Google', 'Lizexiong', 'Taobao', 0, 1, 2, 3, 4]
不同数据类型:
#!/usr/bin/python3 # 语言列表 language = ['French', 'English', 'German'] # 元组 language_tuple = ('Spanish', 'Portuguese') # 集合 language_set = {'Chinese', 'Japanese'} # 添加元组元素到列表末尾 language.extend(language_tuple) print('新列表: ', language) # 添加集合元素到列表末尾 language.extend(language_set) print('新列表: ', language) 新列表: ['French', 'English', 'German', 'Spanish', 'Portuguese'] 新列表: ['French', 'English', 'German', 'Spanish', 'Portuguese', 'Chinese', 'Japanese']
- List index()方法
描述
index() 函数用于从列表中找出某个值第一个匹配项的索引位置。
语法
index()方法语法:
list.index(x[, start[, end]])
参数
x-- 查找的对象。
start-- 可选,查找的起始位置。
end-- 可选,查找的结束位置。
返回值
该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。
实例
以下实例展示了 index()函数的使用方法:
#!/usr/bin/python # -*- coding: UTF-8 -*- aList = [123, 'xyz', 'lizexiong', 'abc'] print ("xyz 索引位置: ", aList.index( 'xyz' )) print ("lizexiong 索引位置 : ", aList.index( 'lizexiong', 1, 3 )) 以上实例输出结果如下: xyz 索引位置: 1 lizexiong 索引位置 : 2 补充案例场景 如果 list 存储了若干复杂结构的值,比如这样的一个列表: temp = [('a', 1, 1.5), ('b', 2, 5.1), ('c', 9, 4.3)] 你想找到其中是 ('b', XX, XX) 这样的元素,其中 XX 可以为任意值。这种情况无法通过 index 函数来获得,我们可以利用 sort 的 key 参数来实现。 list.sort(或者 sorted 函数)有一个 key 参数,你可以提供一个函数来作为排序的依据。此时我们可以传入以下值: temp.sort(key = lambda x:x[0]!='b') 随后我们会发现,所有形如 ('b', XX, XX) 的元素全部浮动到了列表的头部,此时我们访问 temp[0] 就可以获得想要查找的值了。 我们也可以写一个简单的函数: findindex = lambda self,i,value:sorted(self,key=lambda x:x[i]!=value)[0] 那我们只需要这样调用: >>> findindex(temp,0,'b') 就会返回它找到的第一个值: >>> ('b',2)
- List insert()方法
描述
insert() 函数用于将指定对象插入列表的指定位置。
语法
insert()方法语法:
list.insert(index, obj)
参数
index -- 对象 obj 需要插入的索引位置。
obj -- 要插入列表中的对象。
返回值
该方法没有返回值,但会在列表指定位置插入对象。
实例
以下实例展示了 insert()函数的使用方法:
#!/usr/bin/python3 aList = [123, 'xyz', 'zara', 'abc'] aList.insert( 3, 2017) print ("Final List : ", aList) 以上实例输出结果如下: Final List : [123, 'xyz', 'zara', 2017, 'abc'] #列表为空时,位置参数无效
- List pop()方法
描述
pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
语法
pop()方法语法:
list.pop([index=-1])
参数
index -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
返回值
该方法返回从列表中移除的元素对象。
实例
以下实例展示了 pop()函数的使用方法:
#!/usr/bin/python3 list1 = ['Google', 'lizexiong', 'Taobao'] list_pop=list1.pop(1) print "删除的项为 :", list_pop print "列表现在为 : ", list1 以上实例输出结果如下: 删除的项为 : lizexiong 列表现在为 : ['Google', 'Taobao']
- List remove()方法
描述
remove() 函数用于移除列表中某个值的第一个匹配项。
语法
remove()方法语法:
list.remove(obj)
参数
obj -- 列表中要移除的对象。
返回值
该方法没有返回值但是会移除列表中的某个值的第一个匹配项。
实例
以下实例展示了 remove()函数的使用方法:
#!/usr/bin/python aList = [123, 'xyz', 'zara', 'abc', 'xyz']; aList.remove('xyz'); print ("List : ", aList) aList.remove('abc'); print "List : ", aList; 以上实例输出结果如下: List : [123, 'zara', 'abc', 'xyz'] List : [123, 'zara', 'xyz']
- List reverse()方法
描述
reverse() 函数用于反向列表中元素。
语法
reverse()方法语法:
list.reverse()
参数
NA。
返回值
该方法没有返回值,但是会对列表的元素进行反向排序。
实例
以下实例展示了 reverse()函数的使用方法:
#!/usr/bin/python aList = [123, 'xyz', 'zara', 'abc', 'xyz'] aList.reverse() print ("List : ", aList) 以上实例输出结果如下: List : ['xyz', 'abc', 'zara', 'xyz', 123]
- List sort()方法
描述
sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
语法
sort()方法语法:
list.sort( key=None, reverse=False)
参数
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
返回值
该方法没有返回值,但是会对列表的对象进行排序。
实例
以下实例展示了 sort() 函数的使用方法:
#!/usr/bin/python # -*- coding: UTF-8 -*- aList = ['123', 'Google', 'lizexiong', 'Taobao', 'Facebook']; aList.sort(); print("List : ") print(aList) 以上实例输出结果如下: List : ['123', 'Facebook', 'Google', 'lizexiong', 'Taobao']
以下实例降序输出列表:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 列表 vowels = ['e', 'a', 'u', 'o', 'i'] # 降序 vowels.sort(reverse=True) # 输出结果 print('降序输出:') print( vowels ) 以上实例输出结果如下: 降序输出: ['u', 'o', 'i', 'e', 'a']
以下实例演示了通过指定列表中的元素排序来输出列表:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 获取列表的第二个元素 def takeSecond(elem): return elem[1] # 列表 random = [(2, 2), (3, 4), (4, 1), (1, 3)] # 指定第二个元素排序 random.sort(key=takeSecond) # 输出类别 print('排序列表:') print(random) 以上实例输出结果如下: 排序列表: [(4, 1), (2, 2), (1, 3), (3, 4)]
- List clear()方法
描述
clear() 函数用于清空列表,类似于 del a[:]。
语法
clear()方法语法:
list.clear()
参数
无。
返回值
该方法没有返回值。
实例
以下实例展示了 clear()函数的使用方法:
#!/usr/bin/python3 list1 = ['Google', 'Lizexiong', 'Taobao', 'Baidu'] list1.clear() print ("列表清空后 : ", list1) 以上实例输出结果如下: 列表清空后 : []
- List copy()方法
描述
copy() 函数用于复制列表,类似于 a[:]。
语法
copy()方法语法:
list.copy()
参数
无。
返回值
返回复制后的新列表。
实例
以下实例展示了 copy()函数的使用方法:
#!/usr/bin/python3 list1 = ['Google', 'Lizexiong', 'Taobao', 'Baidu'] list2 = list1.copy() print ("list2 列表: ", list2) list3 = ['Google', 'Lizexiong', 'Taobao', {'Baidu':{'chanpin':'baiduyunpan'}}] list4 = list3.copy() print ("list4 列表: ", list4) 输出以下 list2 列表: ['Google', 'Lizexiong', 'Taobao', 'Baidu'] list4 列表: ['Google', 'Lizexiong', 'Taobao', {'Baidu': {'chanpin': 'baiduyunpan'}}]
6.Python元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号 ( ),列表使用方括号 [ ]。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
>>> tup1 = ('Google', 'Lizexiong', 1997, 2000) >>> tup2 = (1, 2, 3, 4, 5 ) >>> tup3 = "a", "b", "c", "d" # 不需要括号也可以 >>> type(tup3) <class 'tuple'>
创建空元组
tup1 = ()
元组中只包含一个元素时,需要在元素后面添加逗号, 否则括号会被当作运算符使用:
>>> tup1 = (50) >>> type(tup1) # 不加逗号,类型为整型 <class 'int'> >>> tup1 = (50,) >>> type(tup1) # 加上逗号,类型为元组 <class 'tuple'>
元组与字符串类似,下标索引从0开始,可以进行截取,组合等。
6.1 访问元组
元组可以使用下标索引来访问元组中的值,如下实例:
#!/usr/bin/python tup1 = ('physics', 'chemistry', 1997, 2000) tup2 = (1, 2, 3, 4, 5, 6, 7 ) print ("tup1[0]: ", tup1[0]) print ("tup2[1:5]: ", tup2[1:5]) 以上实例输出结果: tup1[0]: physics tup2[1:5]: (2, 3, 4, 5)
6.2 修改元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
#!/usr/bin/python3 tup1 = (12, 34.56) tup2 = ('abc', 'xyz') # 以下修改元组元素操作是非法的。 # tup1[0] = 100 # 创建一个新的元组 tup3 = tup1 + tup2 print (tup3) 以上实例输出结果: (12, 34.56, 'abc', 'xyz')
6.3 删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
#!/usr/bin/python3 tup = ('physics', 'chemistry', 1997, 2000) print (tup) del tup print ("After deleting tup : ") print (tup) 以上实例元组被删除后,输出变量会有异常信息,输出如下所示: ('physics', 'chemistry', 1997, 2000) After deleting tup : Traceback (most recent call last): File "test.py", line 9, in <module> print tup NameError: name 'tup' is not defined
6.4 元组运算符
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
6.5 元组索引,截取
因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:
元组:
tup = ('Google', 'Lizexiong', 'Taobao', 'Wiki', 'Weibo','Weixin')
>>> tup = ('Google', 'Lizexiong', 'Taobao', 'Wiki', 'Weibo','Weixin') >>> tup[1] #读取第二个元素 'Lizexiong' >>> tup[-2] #反向读取,读取倒数第二个元素 'Weibo' >>> tup[1:] #截取元素,从第二个开始后的元素 ('Lizexiong', 'Taobao', 'Wiki', 'Weibo', 'Weixin') >>> tup[1:4] #截取元素,从第二个开始到第四个元素(索引为3) ('Lizexiong', 'Taobao', 'Wiki') >>>
6.6 元组内置函数
Python元组包含了以下内置函数
6.7 关于元组是不可变的
所谓元组的不可变指的是元组所指向的内存中的内容不可变。
>>> tup = ('l','i','z','e','x','i','o','n','g') >>> tup[0] = 'g' # 不支持修改元素 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> id(tup) # 查看内存地址 31094344 >>> tup = (1,2,3) >>> id(tup) 41035880 # 内存地址不一样了
从以上实例可以看出,重新赋值的元组 tup,绑定到新的对象了,不是修改了原来的对象。
7.Python3字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
一个简单的字典实例:
tinydict = {'name': 'lizexiong', 'likes': 123, 'url': 'www.lizexiong.com'}
也可如此创建字典:
tinydict1 = { 'abc': 456 } tinydict2 = { 'abc': 123, 98.6: 37 }
7.1 创建空字典
使用大括号 { } 创建空字典:
# 使用大括号 {} 来创建空字典 emptyDict = {} # 打印字典 print(emptyDict) # 查看字典的数量 print("Length:", len(emptyDict)) # 查看类型 print(type(emptyDict)) 以上实例输出结果: {} Length: 0 <class 'dict'>
使用内建函数 dict() 创建字典:
emptyDict = dict() # 打印字典 print(emptyDict) # 查看字典的数量 print("Length:",len(emptyDict)) # 查看类型 print(type(emptyDict)) 以上实例输出结果: {} Length: 0 <class 'dict'>
7.2 访问字典里的值
把相应的键放入到方括号中,如下实例:
#!/usr/bin/python3 tinydict = {'Name': 'Lizexiong', 'Age': 7, 'Class': 'First'} print ("tinydict['Name']: ", tinydict['Name']) print ("tinydict['Age']: ", tinydict['Age']) 以上实例输出结果: tinydict['Name']: Lizexiong tinydict['Age']: 7
如果用字典里没有的键访问数据,会输出错误如下:
#!/usr/bin/python3 tinydict = {'Name': 'Lizexiong', 'Age': 7, 'Class': 'First'} print ("tinydict['Alice']: ", tinydict['Alice']) 以上实例输出结果: Traceback (most recent call last): File "test.py", line 5, in <module> print ("tinydict['Alice']: ", tinydict['Alice']) KeyError: 'Alice'
7.3 修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
#!/usr/bin/python3 tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} tinydict['Age'] = 8 # 更新 tinydict['School'] = "LIZEXIONG" # 添加 print ("tinydict['Age']: ", tinydict['Age']) print ("tinydict['School']: ", tinydict['School']) 以上实例输出结果: tinydict['Age']: 8 tinydict['School']: LIZEXIONG
7.4 删除字典元素
能删单一的元素也能清空字典,清空只需一项操作。
显示删除一个字典用del命令,如下实例:
#!/usr/bin/python3 tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} del tinydict['Name'] # 删除键是'Name'的条目 tinydict.clear() # 清空字典所有条目 del tinydict # 删除字典 print ("tinydict['Age']: ", tinydict['Age']) print ("tinydict['School']: ", tinydict['School']) 但这会引发一个异常,因为用del后字典不再存在: tinydict['Age']: Traceback (most recent call last): File "test.py", line 10, in <module> print "tinydict['Age']: ", tinydict['Age'] NameError: name 'tinydict' is not defined
注:del() 方法后面也会讨论。
7.5 字典键的特性
字典值可以没有限制地取任何 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
#!/usr/bin/python3 tinydict = {'Name': 'LIZEXIONG', 'Age': 7, 'Name': 'Manni'} print ("tinydict['Name']: ", tinydict['Name']) 以上实例输出结果: tinydict['Name']: Manni
2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行,如下实例:
#!/usr/bin/python3 tinydict = {['Name']: 'Zara', 'Age': 7} print ("tinydict['Name']: ", tinydict['Name']) 以上实例输出结果: Traceback (most recent call last): File "test.py", line 3, in <module> tinydict = {['Name']: 'Zara', 'Age': 7} TypeError: unhashable type: 'list'
7.6 字典内置函数
Python字典包含了以下内置函数:
7.7 字典内置方法
Python字典包含了以下内置方法:
- 字典(Dictionary) clear()方法
描述
Python 字典(Dictionary) clear() 函数用于删除字典内所有元素。
语法
clear()方法语法:
dict.clear()
参数
NA。
返回值
该函数没有任何返回值。
实例
以下实例展示了 clear()函数的使用方法:
#!/usr/bin/python tinydict = {'Name': 'Zara', 'Age': 7}; print ("Start Len : %d" % len(tinydict)) tinydict.clear() print ("End Len : %d" % len(tinydict)) 以上实例输出结果为: Start Len : 2 End Len : 0
- 字典(Dictionary) copy()方法
描述
Python 字典(Dictionary) copy() 函数返回一个字典的浅复制。
语法
copy()方法语法:
dict.copy()
参数
NA。
返回值
返回一个字典的浅复制。
实例
以下实例展示了 copy()函数的使用方法:
#!/usr/bin/python dict1 = {'Name': 'Zara', 'Age': 7}; dict2 = dict1.copy() print ("New Dictinary : %s" % str(dict2)) 以上实例输出结果为: New Dictinary : {'Age': 7, 'Name': 'Zara'}
直接赋值和 copy 的区别
可以通过以下实例说明:
#!/usr/bin/python # -*- coding: UTF-8 -*- dict1 = {'user':'LIZEXIONG','num':[1,2,3]} dict2 = dict1 # 浅拷贝: 引用对象 dict3 = dict1.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用 # 修改 data 数据 dict1['user']='root' dict1['num'].remove(1) # 输出结果 print(dict1) print(dict2) print(dict3) 实例中 dict2 其实是 dict1 的引用(别名),所以输出结果都是一致的,dict3 父对象进行了深拷贝,不会随dict1 修改而修改,子对象是浅拷贝所以随 dict1 的修改而修改。 {'num': [2, 3], 'user': 'root'} {'num': [2, 3], 'user': 'root'} {'num': [2, 3], 'user': 'LIZEXIONG'}
- 字典(Dictionary) fromkeys()方法
描述
Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value为字典所有键对应的初始值。
语法
fromkeys()方法语法:
dict.fromkeys(seq[, value])
参数
seq -- 字典键值列表。
value -- 可选参数, 设置键序列(seq)对应的值,默认为 None。
返回值
该方法返回一个新字典。
实例
以下实例展示了 fromkeys() 函数的使用方法:
#!/usr/bin/python3 seq = ('Google', 'LIZEXIONG', 'Taobao') thisdict = dict.fromkeys(seq) print "新字典为 : %s" % str(dict) thisdict = dict.fromkeys(seq, 10) print "新字典为 : %s" % str(thisdict) 以上实例输出结果为: 新字典为 : {'Google': None, 'Taobao': None, 'LIZEXIONG': None} 新字典为 : {'Google': 10, 'Taobao': 10, 'LIZEXIONG': 10}
不指定值:
#!/usr/bin/python3 x = ('key1', 'key2', 'key3') thisdict = dict.fromkeys(x) print(thisdict) 以上实例输出结果为: {'key1': None, 'key2': None, 'key3': None}
- 字典(Dictionary) get()方法
描述
Python 字典(Dictionary) get() 函数返回指定键的值。
语法
get()方法语法:
dict.get(key[, value])
参数
key -- 字典中要查找的键。
value -- 可选,如果指定键的值不存在时,返回该默认值。
返回值
返回指定键的值,如果键不在字典中返回默认值 None 或者设置的默认值。
实例
以下实例展示了 get() 函数的使用方法:
#!/usr/bin/python # -*- coding: UTF-8 -*- tinydict = {'Name': 'LIZEXIONG', 'Age': 27} print ("Age : %s" % tinydict.get('Age')) # 没有设置 Sex,也没有设置默认的值,输出 None print ("Sex : %s" % tinydict.get('Sex')) # 没有设置 Salary,输出默认的值 0.0 print ('Salary: %s' % tinydict.get('Salary', 0.0)) 以上实例输出结果为: Age : 27 Sex : None Salary: 0.0
get() 方法 Vs dict[key] 访问元素区别
get(key) 方法在 key(键)不在字典中时,可以返回默认值 None 或者设置的默认值。
dict[key] 在 key(键)不在字典中时,会触发 KeyError 异常。
实例 >>> lizexiong = {} >>> print('URL: ', lizexiong.get('url')) # 返回 None URL: None >>> print(lizexiong['url']) # 触发 KeyError Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'url' >>>
嵌套字典使用
get() 方法对嵌套字典的使用方法如下:
#!/usr/bin/python # -*- coding: UTF-8 -*- tinydict = {'LIZEXIONG' : {'url' : 'www.lizexiong.com'}} res = tinydict.get('LIZEXIONG', {}).get('url') # 输出结果 print("LIZEXIONG url 为 : %s" % str(res)) 以上实例输出结果为: LIZEXIONG url 为 : www.lizexiong.com
- 字典 in 操作符
描述
Python 字典 in 操作符用于判断键是否存在于字典中,如果键在字典 dict 里返回 true,否则返回 false。
而 not in 操作符刚好相反,如果键在字典 dict 里返回 false,否则返回 true。
语法
in 操作符语法:
key in dict
参数
key -- 要在字典中查找的键。
返回值
如果键在字典里返回true,否则返回false。
实例
以下实例展示了 in 操作符在字典中的使用方法:
#!/usr/bin/python3 thisdict = {'Name': 'Lizexiong', 'Age': 7} # 检测键 Age 是否存在 if 'Age' in thisdict: print("键 Age 存在") else : print("键 Age 不存在") # 检测键 Sex 是否存在 if 'Sex' in thisdict: print("键 Sex 存在") else : print("键 Sex 不存在") # not in # 检测键 Age 是否存在 if 'Age' not in thisdict: print("键 Age 不存在") else : print("键 Age 存在") 以上实例输出结果为: 键 Age 存在 键 Sex 不存在 键 Age 存在
- 字典(Dictionary) items()方法
描述
Python 字典 items() 方法以列表返回视图对象,是一个可遍历的key/value 对。
dict.keys()、dict.values() 和 dict.items() 返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。
视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。
我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。
语法
items()方法语法:
dict.items()
参数
NA。
返回值
返回可视图对象。
实例
以下实例展示了 items()函数的使用方法:
#!/usr/bin/python # coding=utf-8 tinydict = {'Google': 'www.google.com', 'lizexiong': 'www.lizexiong.com', 'taobao': 'www.taobao.com'} print "字典值 : %s" % tinydict.items() # 遍历字典列表 for key,values in tinydict.items(): print key,values 以上实例输出结果为: 字典值 : [('Google', 'www.google.com'), ('taobao', 'www.taobao.com'), ('lizexiong', 'www.lizexiong.com')] Google www.google.com taobao www.taobao.com lizexiong www.lizexiong.com
- 字典(Dictionary) keys()方法
描述
Python3 字典 keys() 方法返回一个视图对象。
dict.keys()、dict.values() 和 dict.items() 返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。
视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。
我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。
注意:Python2.x 是直接返回列表
语法
keys()方法语法:
dict.keys()
参数
NA。
返回值
返回一个视图对象。
实例
以下实例展示了 keys()函数的使用方法:
>>> 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']
- 字典(Dictionary) setdefault()方法
描述
Python 字典 setdefault() 函数和 get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。
语法
setdefault() 方法语法:
dict.setdefault(key, default=None)
参数
key -- 查找的键值。
default -- 键不存在时,设置的默认键值。
返回值
如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。
实例
以下实例展示了 setdefault() 函数的使用方法:
#!/usr/bin/python3 tinydict = {'lizexiong': '华为', 'google': 'Google 搜索'} print ("Value : %s" % tinydict.setdefault('lizexiong', None)) print ("Value : %s" % tinydict.setdefault('Taobao', '淘宝')) 以上实例输出结果为: Value : 华为 Value : 淘宝
- 字典(Dictionary) update()方法
描述
Python 字典(Dictionary) update() 函数把字典 dict2 的键/值对更新到 dict 里。
语法
update()方法语法:
dict.update(dict2)
参数
dict2 -- 添加到指定字典dict里的字典。
返回值
该方法没有任何返回值。
实例
以下实例展示了 update()函数的使用方法:
#!/usr/bin/python tinydict = {'Name': 'Zara', 'Age': 7} tinydict2 = {'Sex': 'female' } tinydict.update(tinydict2) print ("Value : %s" % tinydict) 以上实例输出结果为: Value : {'Age': 7, 'Name': 'Zara', 'Sex': 'female'}
用 update 更新字典 a,会有两种情况:
(1)有相同的键时:会使用最新的字典 b 中 该 key 对应的 value 值。
(2)有新的键时:会直接把字典 b 中的 key、value 加入到 a 中。
>>> a = {1: 2, 2: 2} >>> b = {1: 1, 3: 3} >>> a.update(b) >>> print(a) {1: 1, 2: 2, 3: 3}
- 字典(Dictionary) values()方法
描述
Python3 字典 values() 方法返回一个视图对象。
dict.keys()、dict.values() 和 dict.items() 返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。
视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。
我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。
语法
values()方法语法:
dict.values()
参数
NA。
返回值
返回视图对象。
实例
以下实例展示了 values()函数的使用方法:
>>> 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(values) [1, 500] >>> #相同两个 dict.values() 比较返回都是 False >>> d = {'a': 1} >>> d.values() == d.values() False
- 字典 pop() 方法
描述
Python 字典 pop() 方法删除字典给定键 key 所对应的值,返回值为被删除的值。
语法
pop() 方法语法:
pop(key[,default])
参数
key - 要删除的键
default - 当键 key 不存在时返回的值
返回值
返回被删除的值:
-
- 如果 key 存在 - 删除字典中对应的元素
- 如果 key 不存在 - 返回设置指定的默认值 default
- 如果 key 不存在且默认值 default 没有指定 - 触发 KeyError 异常
实例
以下实例展示了 pop() 方法的使用方法:
#!/usr/bin/python3 site= {'name': '华为', 'alexa': 10000, 'url': 'www.lizexiong.com'} element = site.pop('name') print('删除的元素为:') print(element) print('字典为:') print(site) 输出结果为: 删除的元素为:华为 字典为:{'url': 'www.lizexiong.com', 'alexa': 10000}
如果删除的键不存在会触发异常:
#!/usr/bin/python3 site= {'name': '华为', 'alexa': 10000, 'url': 'www.lizexiong.com'} element = site.pop('nickname') print('删除的元素为:') print(element) print('字典为:') print(site) 输出结果为: Traceback (most recent call last): File "test.py", line 6, in <module> element = site.pop('nickname') KeyError: 'nickname'
可以设置默认值来避免异常:
#!/usr/bin/python # -*- coding: UTF-8 -*- site= {'name': '华为', 'alexa': 10000, 'url': 'www.lizexiong.com'} element = site.pop('nickname', '不存在的 key') print('删除的元素为:') print(element) print('字典为:') print(site) 输出结果为: 删除的元素为:不存在的 key 字典为:{'url': 'www.lizexiong.com', 'alexa': 10000, 'name': '华为'}
- 字典 popitem() 方法
描述
Python 字典 popitem() 方法返回并删除字典中的最后一对键和值。
如果字典已经为空,却调用了此方法,就报出 KeyError 异常。
语法
popitem()方法语法:
popitem()
参数
无
返回值
返回最后插入键值对(key, value 形式),按照 LIFO(Last In First Out 后进先出法) 顺序规则,即最末尾的键值对。
注意:在 Python3.7 之前,popitem() 方法删除并返回任意插入字典的键值对。
实例
以下实例展示了 popitem() 方法的使用方法:
#!/usr/bin/python3 site= {'name': '华为', 'alexa': 10000, 'url': 'www.lizexiong.com'} # ('url': 'www.lizexiong.com') 最后插入会被删除 result = site.popitem() print('返回值 = ', result) print('site = ', site) # 插入新元素 site['nickname'] = 'lizexiong' print('site = ', site) # 现在 ('nickname', 'lizexiong') 是最后插入的元素 result = site.popitem() print('返回值 = ', result) print('site = ', site) 结果输出: 返回值 = ('url', 'www.lizexiong.com') site = {'name': '华为', 'alexa': 10000} site = {'name': '华为', 'alexa': 10000, 'nickname': 'lizexiong'} 返回值 = ('nickname', 'lizexiong') site = {'name': '华为', 'alexa': 10000}
8.Python3 集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,...}
或者
set(value)
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'} >>> print(basket) # 这里演示的是去重功能 {'orange', 'banana', 'pear', 'apple'} >>> 'orange' in basket # 快速判断元素是否在集合内 True >>> 'crabgrass' in basket False >>> # 下面展示两个集合间的运算. ... >>> a = set('abracadabra') >>> b = set('alacazam') >>> a {'a', 'r', 'b', 'c', 'd'} >>> a - b # 集合a中包含而集合b中不包含的元素 {'r', 'd', 'b'} >>> a | b # 集合a或b中包含的所有元素 {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'} >>> a & b # 集合a和b中都包含了的元素 {'a', 'c'} >>> a ^ b # 不同时包含于a和b的元素 {'r', 'd', 'b', 'm', 'z', 'l'}
类似列表推导式,同样集合支持集合推导式(Set comprehension):
>>> a = {x for x in 'abracadabra' if x not in 'abc'} >>> a {'r', 'd'}
8.1 添加元素
语法格式如下:
s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
>>> thisset = set(("Google", "Lizexiong", "Taobao")) >>> thisset.add("Facebook") >>> print(thisset) {'Taobao', 'Facebook', 'Google', 'Lizexiong'}
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
s.update( x )
x 可以有多个,用逗号分开。
>>> thisset = set(("Google", "Lizexiong", "Taobao")) >>> thisset.update({1,3}) >>> print(thisset) {1, 3, 'Google', 'Taobao', 'Lizexiong'} >>> thisset.update([1,4],[5,6]) >>> print(thisset) {1, 3, 4, 5, 6, 'Google', 'Taobao', 'Lizexiong'} >>>
8.2 移除元素
语法格式如下:
s.remove( x )
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
>>> thisset = set(("Google", "Lizexiong", "Taobao")) >>> thisset.remove("Taobao") >>> print(thisset) {'Google', 'Lizexiong'} >>> thisset.remove("Facebook") # 不存在会发生错误 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Facebook' >>>
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:
s.discard( x )
>>> thisset = set(("Google", "Lizexiong", "Taobao")) >>> thisset.discard("Facebook") # 不存在不会发生错误 >>> print(thisset) {'Taobao', 'Google', 'Lizexiong'}
我们也可以设置随机删除集合中的一个元素,语法格式如下:
s.pop() ######################################### thisset = set(("Google", "Lizexiong", "Taobao", "Facebook")) x = thisset.pop() print(x) 输出结果: $ python3 test.py Lizexiong
多次执行测试结果都不一样。
set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
8.3 计算集合元素个数
语法格式如下:
len(s)
计算集合 s 元素个数。
>>> thisset = set(("Google", "Lizexiong", "Taobao")) >>> len(thisset) 3
8.4 清空集合
语法格式如下:
s.clear()
清空集合 。
>>> thisset = set(("Google", "Lizexiong", "Taobao")) >>> thisset.clear() >>> print(thisset) set()
8.5 判断元素是否在集合中存在
语法格式如下:
x in s
判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。
>>> thisset = set(("Google", "Lizexiong", "Taobao")) >>> "Lizexiong" in thisset True >>> "Facebook" in thisset False >>>
8.6 集合内置方法完整列表
- Set add()方法
描述
add() 方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。
语法
add()方法语法:
set.add(elmnt)
参数
elmnt -- 必需,要添加的元素。
返回值
无。
实例
以下实例展示了 add() 方法的使用:
fruits = {"apple", "banana", "cherry"} fruits.add("orange") print(fruits) 输出结果为: {'apple', 'banana', 'orange', 'cherry'}
已存在的元素,则不执行添加操作:
实例 2 fruits = {"apple", "banana", "cherry"} fruits.add("apple") print(fruits) 输出结果为: {'apple', 'banana', 'cherry'}
- Set clear()方法
描述
clear() 方法用于移除集合中的所有元素。
语法
clear()方法语法:
set.clear()
参数
无。
返回值
无。
实例
移除 fruits 集合中的所有元素:
fruits = {"apple", "banana", "cherry"} fruits.clear() print(fruits) 输出结果为: set()
- Set copy()方法
描述
copy() 方法用于拷贝一个集合。
语法
copy() 方法语法:
set.copy()
参数
无。
返回值
返回拷贝的集合。
实例
拷贝 fruits 集合:
sites = {"Google", "Lizexiong", "Taobao"} x = sites.copy() print(x) 输出结果为: set(['Google', 'Taobao', 'Lizexiong'])
- Set difference() 方法
描述
difference() 方法用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中。
语法
difference() 方法语法:
set.difference(set)
参数
set -- 必需,用于计算差集的集合
返回值
返回一个新的集合。
实例
返回一个集合,元素包含在集合 x ,但不在集合 y :
x = {"apple", "banana", "cherry"} y = {"google", "microsoft", "apple"} z = x.difference(y) print(z) 输出结果为: {'cherry', 'banana'}
- difference_update() 方法
描述
difference_update() 方法用于移除两个集合中都存在的元素。
difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。
语法
difference_update() 方法语法:
set.difference_update(set)
参数
set -- 必需,用于计算差集的集合
返回值
无。
实例
移除两个集合都包含的元素:
x = {"apple", "banana", "cherry"} y = {"google", "microsoft", "apple"} x.difference_update(y) print(x) 输出结果为: {'cherry', 'banana'}
- Set discard() 方法
描述
discard() 方法用于移除指定的集合元素。
该方法不同于 remove() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。
语法
discard() 方法语法:
set.discard(value)
参数
value -- 必需,要移除的元素
返回值
无。
实例
移除集合中的元素 banana:
fruits = {"apple", "banana", "cherry"} fruits.discard("banana") print(fruits) 输出结果为: {'cherry', 'apple'}
- Set intersection() 方法
描述
intersection() 方法用于返回两个或更多集合中都包含的元素,即交集。
语法
intersection() 方法语法:
set.intersection(set1, set2 ... etc)
参数
set1 -- 必需,要查找相同元素的集合
set2 -- 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开
返回值
返回一个新的集合。
实例
返回一个新集合,该集合的元素既包含在集合 x 又包含在集合 y 中:
x = {"apple", "banana", "cherry"} y = {"google", "lizexiong", "apple"} z = x.intersection(y) print(z) 输出结果为: {'apple'}
计算多个集合的交集:
x = {"a", "b", "c"} y = {"c", "d", "e"} z = {"f", "g", "c"} result = x.intersection(y, z) print(result) 输出结果为: {'c'}
- Set intersection_update() 方法
描述
intersection_update() 方法用于获取两个或更多集合中都重叠的元素,即计算交集。
intersection_update() 方法不同于 intersection() 方法,因为 intersection() 方法是返回一个新的集合,而 intersection_update() 方法是在原始的集合上移除不重叠的元素。
语法
intersection_update() 方法语法:
set.intersection_update(set1, set2 ... etc)
参数
set1 -- 必需,要查找相同元素的集合
set2 -- 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开
返回值
无。
实例
移除 x 集合中不存在于 y 集合中的元素:
x = {"apple", "banana", "cherry"} # y 集合不包含 banana 和 cherry,被移除 y = {"google", "lizexiong", "apple"} x.intersection_update(y) print(x) 输出结果为: {'apple'}
计算多个集合的并集:
x = {"a", "b", "c"} y = {"c", "d", "e"} z = {"f", "g", "c"} x.intersection_update(y, z) print(x) 输出结果为: {'c'}
- Set isdisjoint() 方法
描述
isdisjoint() 方法用于判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。。
语法
isdisjoint() 方法语法:
set.isdisjoint(set)
参数
set -- 必需,要比较的集合
返回值
返回布尔值,如果不包含返回 True,否则返回 False。
实例
判断集合 y 中是否有包含 集合 x 的元素:
x = {"apple", "banana", "cherry"} y = {"google", "lizexiong", "facebook"} z = x.isdisjoint(y) print(z) 输出结果为: True
如果包含返回 False:
x = {"apple", "banana", "cherry"} y = {"google", "lizexiong", "apple"} z = x.isdisjoint(y) print(z) 输出结果为: False
- Set issubset() 方法
描述
issubset() 方法用于判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返回 False。
语法
issubset() 方法语法:
set.issubset(set)
参数
set -- 必需,要比查找的集合
返回值
返回布尔值,如果都包含返回 True,否则返回 False。
实例
判断集合 x 的所有元素是否都包含在集合 y 中:
x = {"a", "b", "c"} y = {"f", "e", "d", "c", "b", "a"} z = x.issubset(y) print(z) 输出结果为: True
如果没有全部包含返回 False:
x = {"a", "b", "c"} y = {"f", "e", "d", "c", "b"} z = x.issubset(y) print(z) 输出结果为: False
- Set issuperset() 方法
描述
issuperset() 方法用于判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 True,否则返回 False。
语法
issuperset() 方法语法:
set.issuperset(set)
参数
set -- 必需,要比查找的集合
返回值
返回布尔值,如果都包含返回 True,否则返回 False。
实例
判断集合 y 的所有元素是否都包含在集合 x 中:
x = {"f", "e", "d", "c", "b", "a"} y = {"a", "b", "c"} z = x.issuperset(y) print(z) 输出结果为: True
如果没有全部包含返回 False:
x = {"f", "e", "d", "c", "b"} y = {"a", "b", "c"} z = x.issuperset(y) print(z) 输出结果为: False
- Set pop() 方法
描述
pop() 方法用于随机移除一个元素。
语法
pop() 方法语法:
set.pop()
参数
无
返回值
返回移除的元素。
实例
随机移除一个元素:
fruits = {"apple", "banana", "cherry"} fruits.pop() print(fruits) 输出结果为: {'apple', 'banana'}
输出返回值:
fruits = {"apple", "banana", "cherry"} x = fruits.pop() print(x) 输出结果为: banana
- Set remove() 方法
描述
remove() 方法用于移除集合中的指定元素。
该方法不同于 discard() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。
语法
remove() 方法语法:
set.remove(item)
参数
item -- 要移除的元素
返回值
没有返回值。
实例
移除元素 banana:
fruits = {"apple", "banana", "cherry"} fruits.remove("banana") print(fruits) 输出结果为: {'cherry', 'apple'}
- Set symmetric_difference() 方法
描述
symmetric_difference() 方法返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素。
语法
symmetric_difference() 方法语法:
set.symmetric_difference(set)
参数
set -- 集合
返回值
返回一个新的集合。
实例
返回两个集合组成的新集合,但会移除两个集合的重复元素:
x = {"apple", "banana", "cherry"} y = {"google", "lizexiong", "apple"} z = x.symmetric_difference(y) print(z) 输出结果为: {'google', 'cherry', 'banana', 'lizexiong'}
- Set symmetric_difference_update() 方法
描述
symmetric_difference_update() 方法移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
语法
symmetric_difference_update() 方法语法:
set.symmetric_difference_update(set)
参数
set -- 要检测的集合
返回值
无。
实例
在原始集合 x 中移除与 y 集合中的重复元素,并将不重复的元素插入到集合 x 中:
x = {"apple", "banana", "cherry"} y = {"google", "lizexiong", "apple"} x.symmetric_difference_update(y) print(x) 输出结果为: {'google', 'cherry', 'banana', 'lizexiong'}
- Set union() 方法
描述
union() 方法返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次。
语法
union() 方法语法:
set.union(set1, set2...)
参数
set1 -- 必需,合并的目标集合
set2 -- 可选,其他要合并的集合,可以多个,多个使用逗号 , 隔开。
返回值
返回一个新集合。
实例
合并两个集合,重复元素只会出现一次:
x = {"apple", "banana", "cherry"} y = {"google", "lizexiong", "apple"} z = x.union(y) print(z) 输出结果为: {'cherry', 'lizexiong', 'google', 'banana', 'apple'}
合并多个集合:
x = {"a", "b", "c"} y = {"f", "d", "a"} z = {"c", "d", "e"} result = x.union(y, z) print(result) 输出结果为: {'c', 'd', 'f', 'e', 'b', 'a'}
- Set update() 方法
描述
update() 方法用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
语法
update() 方法语法:
set.update(set)
参数
set -- 必需,可以是元素或集合
返回值
无。
实例
合并两个集合,重复元素只会出现一次:
x = {"apple", "banana", "cherry"} y = {"google", "lizexiong", "apple"} x.update(y) print(x) 输出结果为: {'banana', 'apple', 'google', 'lizexiong', 'cherry'}