切片操作是访问序列中元素的另一种方法,它可以访问一定范围内的元素,通过切片操作,可以生成一个新的序列。
序列实现切片操作的语法格式如下:
sname[start : end : step]
其中,各个参数的含义分别是:
例如,对字符串“C语言中文网”进行切片:
str="C语言中文网" #取索引区间为[0,2]之间(不包括索引2处的字符)的字符串 print(str[:2]) #隔 1 个字符取一个字符,区间是整个字符串 print(str[::2]) #取整个字符串,此时 [] 中只需一个冒号即可 print(str[:])
运行结果为:
C语 C言文 C语言中文网
Python 中,使用数字 n 乘以一个序列会生成新的序列,其内容为原来序列被重复 n 次的结果。例如:
str="C语言中文网" print(str*3)
输出结果为:
'C语言中文网C语言中文网C语言中文网'
比较特殊的是,列表类型在进行乘法运算时,还可以实现初始化指定长度列表的功能。例如如下的代码,将创建一个长度为 5 的列表,列表中的每个元素都是 None,表示什么都没有。
list = [None]*5 print(list)
输出结果为:
[None, None, None, None, None]
Python 中,可以使用in 关键字检查某元素是否为序列的成员,其语法格式为:
value in sequence
其中,value 表示要检查的元素,sequence 表示指定的序列。
例如,检查字符‘c’是否包含在字符串“c.biancheng.net”中,可以执行如下代码:
str/="c.biancheng.net" print('c'in str)
运行结果为:
True
从内容上看,列表可以存储整数、小数、字符串、列表、元组等任何类型的数据,并且同一个列表中元素的类型也可以不同。比如说:
["http://c.biancheng.net/python/", 1, [2,3,4] , 3.0]
可以看到,列表中同时包含字符串、整数、列表、浮点数这些数据类型。
例如,下面定义的列表都是合法的:
num = [1, 2, 3, 4, 5, 6, 7] name = ["C语言中文网", "http://c.biancheng.net"] program = ["C语言", "Python", "Java"]
除了使用 [ ]
创建列表外,Python 还提供了一个内置的函数 list(),使用它可以将其它数据类型转换为列表类型。例如:
#将字符串转换成列表 list1 = list("hello") print(list1) #将元组转换成列表 tuple1 = ('Python', 'Java', 'C++', 'JavaScript') list2 = list(tuple1) print(list2) #将字典转换成列表 dict1 = {'a':100, 'b':42, 'c':9} list3 = list(dict1) print(list3) #将区间转换成列表 range1 = range(1, 6) list4 = list(range1) print(list4) #创建空列表 print(list())
运行结果:
['h', 'e', 'l', 'l', 'o'] ['Python', 'Java', 'C++', 'JavaScript'] ['a', 'b', 'c'] [1, 2, 3, 4, 5] []
url = list("http://c.biancheng.net/shell/") #使用索引访问列表中的某个元素 print(url[3]) #使用正数索引 print(url[-4]) #使用负数索引
运行结果:
p e
intlist = [1, 45, 8, 34] print(intlist) del intlist print(intlist)
运行结果:
[1, 45, 8, 34] Traceback (most recent call last): File "C://Users//mozhiyan//Desktop//demo.py", line 4, in <module> print(intlist) NameError: name 'intlist' is not defined
append() 方法用于在列表的末尾追加元素,该方法的语法格式如下:
listname.append(obj)
其中,listname 表示要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等。
l = ['Python', 'C++', 'Java'] #追加元素 l.append('PHP') print(l) #追加元组,整个元组被当成一个元素 t = ('JavaScript', 'C#', 'Go') l.append(t) print(l) #追加列表,整个列表也被当成一个元素 l.append(['Ruby', 'SQL']) print(l)
运行结果为:
['Python', 'C++', 'Java', 'PHP'] ['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go')] ['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go'), ['Ruby', 'SQL']]
可以看到,当给 append() 方法传递列表或者元组时,此方法会将它们视为一个整体,作为一个元素添加到列表中,从而形成包含列表和元组的新列表。
extend() 和 append() 的不同之处在于:extend() 不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中。
extend() 方法的语法格式如下:
l = ['Python', 'C++', 'Java'] #追加元素 l.extend('C') print(l) #追加元组,元祖被拆分成多个元素 t = ('JavaScript', 'C#', 'Go') l.extend(t) print(l) #追加列表,列表也被拆分成多个元素 l.extend(['Ruby', 'SQL']) print(l)
运行结果:
['Python', 'C++', 'Java', 'C'] ['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go'] ['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go', 'Ruby', 'SQL']
append() 和 extend() 方法只能在列表末尾插入元素,如果希望在列表中间某个位置插入元素,那么可以使用 insert() 方法。
insert() 的语法格式如下:
listname.insert(index , obj)
其中,index 表示指定位置的索引值。insert() 会将 obj 插入到 listname 列表第 index 个元素的位置。
当插入列表或者元祖时,insert() 也会将它们视为一个整体,作为一个元素插入到列表中,这一点和 append() 是一样的。
l = ['Python', 'C++', 'Java'] #插入元素 l.insert(1, 'C') print(l) #插入元组,整个元祖被当成一个元素 t = ('C#', 'Go') l.insert(2, t) print(l) #插入列表,整个列表被当成一个元素 l.insert(3, ['Ruby', 'SQL']) print(l) #插入字符串,整个字符串被当成一个元素 l.insert(0, "http://c.biancheng.net") print(l)
输出结果为:
['Python', 'C', 'C++', 'Java'] ['Python', 'C', ('C#', 'Go'), 'C++', 'Java'] ['Python', 'C', ('C#', 'Go'), ['Ruby', 'SQL'], 'C++', 'Java'] ['http://c.biancheng.net', 'Python', 'C', ('C#', 'Go'), ['Ruby', 'SQL'], 'C++', 'Java']