序列除了索引和切片,还有加法、乘法和函数等功能,这些功能在我们进行序列操作的时候能提供一定的帮助,本节介绍一下加法和乘法。
1. 加法
序列具有相加的功能,这个相加同我们数字之间的相加类似,但序列支持将两个类型相同的序列加在一起,使用‘+’符号进行操作。
我们通过两个例子简单看一下:
1)相同类型的序列相加,代码如下:
1 2 3 4 5 6 7 8 9 | my_list = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,] my_list2 = [ 11 , 22 , 33 , 44 , 55 , 66 ] my_str = 'abcdefghijklmn' my_str2 = 'opqrstuvwxyz' my_tuple = ( 1 , 2 , 3 , 4 , 5 ) my_tuple2 = ( 6 , 7 , 8 , 9 ) print ( '两个列表相加后为:' ,my_list + my_list2) print ( '两个字符串相加后为:' ,my_str + my_str2) print ( '两个元组相加后:' ,my_tuple + my_tuple2) |
运行结果:
两个列表相加后为: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66]
两个字符串相加后为: abcdefghijklmnopqrstuvwxyz
两个元组相加后: (1, 2, 3, 4, 5, 6, 7, 8, 9)
2)不同类型的序列相加,代码如下:
1 2 3 4 5 | my_list = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,] my_str = 'abcdefghijklmn' my_tuple = ( 1 , 2 , 3 , 4 , 5 ) print ( '列表和字符串相加:' ,my_list + my_str) print ( '字符串和元组相加:' ,my_str + my_tuple) |
运行结果:
1 2 3 4 | Traceback (most recent call last): File "", line 4 , in <module> print ( '列表和字符串相加:' ,my_list + my_str) TypeError: can only concatenate list ( not "str" ) to list |
运行图:
错误提示为:只能将列表(不是“str”)连接到列表,因此在‘+’操作的时候要使用相同类型进行相加。
2. 乘法
Python提供序列的相乘功能,这个相乘和算法的不太相同,当一个序列乘上x的时候,生成的新的序列是将原有序列重复的相加了x次。
序列的乘法相对来说也是比较简单的,我们通过简单例子来看一下。
1 2 3 4 5 6 | my_list = [ 1 , 2 , 3 , 4 , 5 ] my_str = 'www.dotcpp.com' my_tuple = ( 1 , 2 , 3 , 4 , 5 ) print ( '将my_list列表乘上3得到一个新列表为:' ,my_list * 3 ) print ( '将my_str字符串乘上3得到一个新字符串为:' ,my_str * 3 ) print ( '将my_tuple元组乘上3得到一个新元组为:' ,my_tuple * 3 ) |
输出结果:
将my_list列表乘上3得到一个新列表为: [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
将my_str字符串乘上3得到一个新字符串为:www.dotcpp.comwww.dotcpp.comwww.dotcpp.com
将my_tuple元组乘上3得到一个新元组为: (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
运行图为:
唯一要注意的就是这里生成的是新的列表,字符串,元组,原始的列表和字符串以及元组都是没有改变的,这一点大家可以通过再次print来试一下。
序列的乘法还有一个初始化指定长度列表的功能。
看一下下面代码:
1 2 | my_list = [ None ] * 5 #实现一个长度为5的初始化列表 print (my_list) |
输出结果:
1 | [ None , None , None , None , None ] |
这种方式通常在列表操作超出已有数据的长度的时候会使用到,因为当访问列表的索引大于列表长度的时候就会出现访问错误的问题。