前言
由于列表和元组比较相似,所以放在一起总结,它们的区别在于元组和字符串一样是不可修改的,而列表能够被修改,字符串则不能。
一、列表
(一)列表的创建
在Python中有两种方式可以创建列表。
1、第一种是可以通过使用中括号,即[]来创建列表,其中列表的元素使用逗号分隔开,其中字符串类型可以用单引号或双引号都可以表示。
如下python代码,列表a中元素的类型为字符串,列表c是一个空列表:
a = ["C", "S", "D", "N"] b = [1, 2, 3.5, 6.66] c = [] print(a) print(b) print(c)
运行结果如下:
2、第二种是可以通过内置函数list()来创建列表,要注意该内置函数必须要接收的参数是可迭代的。
如下python代码,也可以在list()函数中通过[]来创建含多个元素的列表:
a = list("csdn") b = list("123456") c = list([1, 2, "python", "java"]) d = list() print(a) print(b) print(c) print(d)
运行结果如下:
可以通过range()函数生成一个数字范围的对象,比如range(0,5)表示从0开始一直到4(不包括5),而range(0,5,2)的添加了一个参数,步长(间隔)变成2,该函数可与列表一起使用从而生成数字序列:
print(list(range(5))) print(list(range(0,5))) print(list(range(0,5,2)))#以列表形式输出数字0至5但不包括5,步长为2 print(list(range(5,0,-1)))#以列表形式输出数字5至0但不包括0,步长为1 print(list(range(5,0,-2)))#以列表形式输出数字5至0但不包括0,步长为2
运行结果如下:
(二)访问列表元素
可以通过索引和切片的方式访问列表元素的值,这里的两种方式与之前的字符串的索引和切片一样,索引从0开始,都是可以获取指定元素或部分元素,由于列表和字符串一样,它们都是可迭代对象(后面讲的元组、字典、集合也是一样)。
例如列表a=["Python","Java","c","c#"],其正向索引和反向索引:
正向索引:Python对应0,Java对应1,c对应2,c#对应3
反向索引:c#对应-1,c对应-2,Java对应-3,Python对应-4。
1、索引,获取列表中指定元素,如下python代码,通过正向、负向索引来访问列表中的元素:
a = ["python", "java", "c", "c#", "c++"] print("使用索引来访问列表中的元素:") print(a[2]) print(a[0]) print(a[-1])
运行结果如下:
2、切片,获取列表中部分元素,从而得到一个新的列表,比如[1:3]它表示的是返回下标1至2的元素,而并不会返回下标为3的元素,如下python代码,通过切片来访问列表中部分元素,这里的print(a[:])输出的是列表的所有元素:
a = ["python", "java", "c", "c#", "c++"] print("使用切片来访问列表中的元素:") print(a[:])#输出列表中的所有元素 print(a[::-1])#逆序输出列表中的所有元素 print(a[:3])#输出列表中索引为开头至3的元素,但不包括3 print(a[3:])#输出列表中索引为3至末尾的元素 print(a[1:3])#输出列表中索引为1至3的元素,但不包括3 print(a[0:3:2])#输出列表中从索引为0至3且步长为2的元素,但不包括3 print(a[0:3:1])#输出列表中从索引为0至3且步长为1的元素,但不包括3 print(a[3:0:-1])#输出列表中从索引为3至0且步长为1的元素,但不包括0 print(a[3:0:-2])#输出列表中从索引为3至0且步长为2的元素,但不包括0
运行结果如下:
(三)列表的增删改
1、添加列表元素,可以通过函数append()、extend()、insert()三个内置函数来添加列表新的列表元素。
(1)insert()函数用于将元素插入到列表的指定位置;
(2)append()函数用于在列表末尾添加新的元素;
(3)extend()函数用于在列表末尾添加另一个列表。
其示例如下python代码:
a = ["python", "java"] a.insert(0, "c++") a.insert(-1, "c") print(a) b = ["1班", "2班"] b.append("3班") print(b) c1 = ["1班", "2班"] c2 = ["3班", "4班", "5班"] c1.extend(c2) print(c1)
运行结果如下:
2、删除列表元素,可以通过del、remove()、pop()三种方法来删除列表中的元素。
(1)del语句用于删除列表中指定元素,可以使用索引或切片来指定要删除的元素。
其示例如下python代码:
a = ["python", "java", "c", "c++"] del a[0] print(a) del a[0:3:2] print(a)
运行结果如下:
(2)remove()函数用于删除列表中指定元素,若有多个指定元素,则只删除第一个相同的指定元素;
其示例如下python代码:
b = ["python", "java", "c", "c++", "c"] b.remove("java") print(b) b.remove("c") print(b)
运行结果如下:
(3)pop()函数用于删除列表中指定元素,可以通过索引来指定要删除元素,若不指定,则只删除该列表的末尾元素。
其示例如下python代码:
c = [1, 2, 3, 4, 5] c.pop(0) print(c) c.pop() print(c)
运行结果如下:
3、修改列表元素,可以通过索引访问元素并对该元素进行修改,即重新赋值该元素。
其示例如下python代码:
a = ["python", "java", "c", "c++"] a[3] = "c#" print(a)
运行结果如下:
(四)列表的遍历
由于列表是个可迭代对象,可以通过for循环来遍历列表中的各元素。
例如下列Python代码,通过for循环遍历列表并依次输出临时变量:
a = ["Python", "CSS", "Java", "C++"] for i in a: print(i) b = [100, 200, 300] for l in b: print(l)
运行结果如下:
(五)列表的排序
可以通过sort()、sorted()、reverse()三种函数对列表进行排序,要注意排序后的列表将会替换原本的列表。
(1)sorted()函数用于将列表中的元素升序排序,例如下列python代码:
a = ["20", "-1.2", "0", "1"] print(sorted(a))
运行结果如下:
(2)sort()函数有两个参数,参数key指定排序规则,可以为列表支持的函数,而参数reverse指定列表元素排序的方式(默认值为False,表示升序排列,若reverse=True,则表示降序排列)。
例如下列Python代码,列表a只设置了参数reverse,且reverse=True,表示将列表按降序排列;通过sort()函数对b列表设置参数key,且key=len,内置函数len()函数可以用于计算字符串的长度,这里根据字符串的字符长度进行排序,且参数key为默认值即升序排列:
a = ["20", "-1.2", "0", "1"] a.sort(reverse=True) print(a) b = ["python", "php", "c", "c#"] b.sort(key=len) print(b)
运行结果如下:
例如已知列表li_num1=[4,5,2,7,0,2]和li_num2=[3,6,-1],请将这两个列表合并为一个列表,并将合并后的列表中的元素按照从小到大的顺序排列,如下代码,:
li_num1 = [4, 5, 2, 7, 0, 2] li_num2 = [3, 6, -1] li_num1.extend(li_num2) # 通过extend()函数在li_num1末尾插入li_num2列表 li_num1.sort() # 通过sort()函数将li_num1列表中的元素进行排序,由于未给参数即为升序排序 print(li_num1)
运行结果如下:
(3)reverse()函数用于将列表中的元素顺序颠倒,注意这里的不是降序排序,而是将原来列表元素的顺序颠倒过来。
例如,下列python代码:
a = ["20", "-1.2", "0", "1"] a.reverse() print(a)
运行结果如下,可以发现列表中元素顺序被颠倒:
(六)列表的嵌套
列表可以进行嵌套,即在一个列表中嵌套列表。
例如下列Python代码,访问嵌套列表中的值:
a = ["南区", "北区"] b = ["1班", "2班"] c = [a, b] print(c) print(c[0][-1]) print(c[-1][-1])
运行结果如下:
也可以向嵌套的内层列表中添加元素,首先要获取内层列表,然后再添加,如下python代码,向第一个列表中添加元素,且在内层列表的第一个:
a = ["南区", "北区"] b = ["1班", "2班"] c = [a, b] print(c) c[0].insert(0, "东区") print(c)
运行结果如下:
二、元组
(一)元组的创建
元组的创建方式也有两种,元组的创建与列表差不多,相比列表,元组内的元素不允许修改。
1、第一种方式使用的是圆括号,即()来创建列表,元组内的元素也是使用逗号分隔开,字符串类型可以用单引号或双引号都可以表示。
不过也可以不需要圆括号来创建元组,一般最好加上。
例如,下列Python代码:
a = () b = ("b", "l", "u", "e") c = (1, 2, 3, 4, 5, 6) d = "第一", "第二", "第三", "第四" print(a, b, c, d)
运行结果如下:
注:当元组只包含一个元素时,也要在元素后面加上逗号,表示这是个元组。
2、第二种方式是通过tuple()函数来创建元组,该函数接收的元素是可迭代的,若函数内没有值,则创建一个空元组。
例如,下列Python代码,其中元组d中元组的元素为一个列表:
a = tuple() print(a) b = tuple("tooth") print(b) c = tuple("123456") print(c) d = tuple(["对", "错"]) print(d)
运行结果如下:
(二)访问元组元素
和列表一样,也是可以通过索引和切片来访问元组的元素,例如下列python代码:
a = tuple("tooth") b = tuple("123456") print(a[0]) print(a[1]) print(b[2:5:1])
运行结果如下:
(三)元组的连接组合和删除
1、由于元组中的元素是不能修改的,即每个元素的指向是永远没有改变的,除非元组中含有可变类型的数据,比如元组中的元素是一个列表时。
可以通过对元组连接组合,即将两个元组组合在一起形成一个新的元组,例如下列python代码:
a = tuple("语文") b = tuple("数学") c = a + b print(c)
运行结果如下:
例如给定一个元组num=(“p”,“y”,“t”,[“h”,“n”]),对元组内的列表添加“o”字符,首先通过索引元组,然后通过对元组中的列表进行insert()在指定位置插入字符“o”,下列python代码:
num = ("p", "y", "t", ["h", "n"]) num[3].insert(1, "o") print(num)
运行结果如下:
2、虽然元组中的元素不能删除,但是可以使用del语句来删除整个元组,例如下列python代码:
a = tuple("tooth") del a