一、列表和元组
1.序列:是一种包含多项数据(元素)的数据结构,通过索引来访问序列中的每个元素。
1)常用的三种数据结构:列表(list)、元组(tuple)和字典(dict)。因为在程序中不仅需要用变量来保存单个数据,还需要使用多种数据结构来保存大量的数据,而列表、元组和字典就是用来保存大量数据的。
2)字符串也是一种序列。
2.列表和元组的区别:
1)元组是不可变的,元组一旦建立构建出来,程序就不能修改元组中所包含的成员。在程序中如果只是固定的保存多个数据项,不需要修改它们,此时就应该使用元组。比如Python要求字典的Key必须是不可变的,此时程序只能使用元组来保存Key。
2)列表是可变的,程序可以修改列表所包含的元素。
3)字符串也是不可变的,程序不可以修改字符串中的字符序列,替换字符时只能重新组成一个新的字符串,不能修改原有字符串字符。
3.创建列表和元组
1)创建列表使用方括号[], 元素之间用英文逗号( ,)隔开。
>>>my_list = [‘Jeff’,8, ‘boy’]
>>>print(my_list)
2)创建元组使用圆括号(),元素之间用英文逗号( ,)隔开。
>>>my_tuple = (‘Jeff’,8, ‘boy’)
>>>print(my_tuple)
4.通过索引使用元素
1)列表和元组都可以通过索引来访问元素,它们的索引都是从0开始,第一个元素的索引为0,第二个元素的索引为1,以此类推。它们也都支持负数索引,倒数第一个元素的索引为-1,倒数第二个的索引为-2,以些类推。(同前面所讲字符串的索引)例如:
#访问列表的元素
>>>my_list = [‘Jeff’,8, ‘boy’]
>>>print(my_list)
>>>print(my_list[0]) #Jeff
>>>print(my_list[1]) #8
>>>print(my_list[2]) #boy
#访问元组的元素
>>>my_tuple = (‘Jeff’,8, ‘boy’)
>>>print(my_tuple)
>>>print(my_tuple[0]) #Jeff
>>>print(my_tuple[1]) #8
>>>print(my_tuple[2]) #boy2)
列表的元素相当于一个变量,程序既可以使用它的值,也可以对它重新赋值。元组的元素相当于一个常量,程序只可以引用它的值,不能对它重新赋值。
5.通过索引获取子序列(中间一段):列表和元组同样可以使用索引,来获取中间一段元素,这种方法叫做slice(切片)。(同前面所讲字符串一样)例如:
格式为:[start : end: step]
#访问第2个到第4个元素(不包含4)
>>>my_tuple =(‘a’,’b’,’c’,’d’,’e’’f’,’g’)
>>>print(my_tuple[2:4] # ('c', 'd')
#访问第2个到倒数第2个元素(不包含倒数第2)
>>>print(my_tuple[2:-2] #('c', 'd', 'e')
# 访问倒数第3个到倒数第1个(不包含倒数第1)
>>>print(my_tuple[-3:-1] # ('e', 'f') , 注意不是[-1:-3]
二、列表和元组支持的运算
1.加法: 列表和元组都支持加法运算,结果就是两个列表和元组的元素总和。例如:
#两个元组相加
>>> tuple1 =('a','b','c',1,2,3)
>>> tuple2 =('c','d','e',4,5,6)
>>> sum_tuple = tuple1+tuple2
>>> print(sum_tuple) #('a', 'b', 'c', 1, 2, 3, 'c', 'd', 'e', 4, 5, 6)
>>>print(tuple1+('c','d','e',4,5,6)) #('a', 'b', 'c', 1, 2, 3, 'c', 'd', 'e', 4, 5, 6)
#两个列表相加
>>> list1 =['a','b','c',1,2,3]
>>> list2 =['c','d','e',4,5,6]
>>> sum_list = list1+list2
>>> print(sum_list) #['a', 'b', 'c', 1, 2, 3, 'c', 'd', 'e', 4, 5, 6]
>>>print(list1+['c','d','e',4,5,6]) #['a', 'b', 'c', 1, 2, 3, 'c', 'd', 'e', 4, 5, 6]
2.乘法:列表和元组都可以和整数进行乘法运算,结果就是把它们所包含的元素重复N次。例如:
>>>a_tuple = (‘a’,b’,’c’)
>>>mul_tuple =a_tuple*3
>>>print(mul_tuple) #(‘a’,b’,’c’, ‘a’,b’,’c’, ‘a’,b’,’c’)
3.In运算:用于判断列表和元组中是否。例如:
>>>a_tuple = (‘a’,b’,’c’)
>>>print(‘a’ in a_tuple) # Ture
>>>print(‘x’ in a_tuple) #False
4.长度:Python提供了内置函数len()来获取元组或列表的长度。例如:
>>>a_tuple = (‘a’,b’,’c’)
>>>print(len(a_tuple)) # 3
5.最大值和最小值:Python提供了内置函数max()和min()来获取元组或列表的最大值和最小值。例如:
>>>a_tuple = (‘a’,b’,’c’)
>>>b_tuple = (‘abc’,’acd’,’bdf’)
#计算最大值
>>>print(max(a_tuple)) # c
>>>print(max(b_tuple)) # bdf
#计算最小值
>>>print(min(a_tuple)) # a
>>>print(min(a_tuple)) #abc
备注:26个小写ASCII码值为97-122, 单个元素中有多个字母或数值时,先比较第一个,若相同再比较第二个)
6.序列封包(Sequence Packing): 程序把多个值赋值给变量时,Python会自动将多个值封装成元组。这种功能被称为序列封包。例如:
#将1、2、3封装成元组后赋值给变量Var
>>>Var =1,2,3
>>>print(Var) #(1,2,3)
>>>print(type(var))#
7. 序列解包 (Sequence Unpacking):程序允许将序列(元组或列表等)直接赋值给多个变量,序列的每个元素会被依次赋值给多个变量。这种功能被称为序列解包。
#将tuple1中的元素1、2、3、4、5依次赋值给变量 a、b、c、d、e
>>>tuple1=(1,2,3,4,5)
>>>a,b,c,d,e=tuple1
>>>print(a,b,c,d,e) #1 2 3 4 5
三、 列表的常用方法
1. list()函数:可以将元组、区间(range)等对象转换成列表。例如:
#将元组转换成列表
>>>a_tuple =(‘a’,’b’,’c’)
>>>a_list =list(a_tuple)
>>>print(a_list) #['a', 'b', 'c']
#将区间转换成列表
>>>a_range =range(1,5)
>>>b_list =list(a_range)
>>>print(b_list)#[1,2,3,4]
2. tuple()函数:可以将元组、区间(range)等对象转换成元组。例如:
#将列表转换成元组
>>>a_list =[‘a’,’b’,’c’]
>>>a_tuple =tuple(a_list)
>>>print(a_tuple) #('a', 'b', 'c')
3. 增加列表元素:可调用列表的append()方法,它会把传入的参数追加到列表的最后面。append()方法还可以向列表中追加元组或列表,但该方法只是将追加的元组或列表当成单个元素。
1) 向列表中追加元素,例如:
>>>a_list =[‘a’,’b’,’c’]
>>>a_list.append(‘d’)
>>>print(a_list) ##['a', 'b', 'c', ’d’]
2) 向列表中追加元组,例如:
>>>a_tuple =(1,2,3)
>>>a_list =[‘a’,’b’,’c’]
>>>a_list.append(a_tuple)
>>>print(a_list) ##['a', 'b', 'c', (1,2,3)]
3) 向列表中追加列表,例如:
>>>a_list =[‘a’,’b’,’c’]
>>>b_lsit =[‘d’,’f’]
>>>a_list.append(b_list)
>>>print(a_list) ##['a', 'b', 'c',[ ’d’,’f’]]
4) extend()方法:如果不想要追加的列表当成一个整体元素,则可以使用extend()方法。例如: >>>a_list =[‘a’,’b’,’c’] >>>b_lsit =[‘d’,’f’] >>>a_list.extend(b_list) >>>print(a_list) #['a', 'b', 'c',’ d’, ‘f’]
4. 删除列表元素:Python 中的del语句专门用来执行删除操作,它既可以删除列表中的一个元素,又可以删除一段子序列,还可以删除变量。例如:
>>>a_list =[‘a’,’b’,’c’]
>>>b_list =[‘a’,’b’,’c’,’d’,’e’,’f’]
>>>del a_list[2]
>>>del b_list[1:3]
>>>print(a_list) #['a', 'b']
>>>print(b_list) #['a', 'd', 'e', 'f']
5. 修改列表元素:程序对列表元素赋值,即修改了列表元素。例如:
>>>b_list =[‘a’,’b’,’c’,’d’,’e’,’f’]
>>>b_list[2]=’x’
>>>print(b_list) #['a', 'b', 'x', 'd', 'e', 'f']
6. 列表的其它常用方法:除了增加、删除、修改以外,列表中还包含一些其它的常作方法。
1) 输入dir(list), 可以查看列表中包含的所有方法。例如:
>>>dir(list) #列出list的所有方法
2) 其它方法的功能介绍:
count():用来统计列表中某个元素出现的次数。
index():用来判断某个元素在列表中出现的位置。
pop():用来将列表当作栈(stack)来使用,实现元素出栈功能。
reverse():用于将列表中元素反响存放。
sort():用于对列表元素排序。
例如(count):
#计算列表中12出现的次数
>>>a_list =[1,12,4,5,6,12,5,12]
>>>print(a_list.count(12)) #3
例如(sort):
#对列表中的元素排序
>>>a_list =[1,12,4,5,6,12,5,12]
>>>a_list.sort()
>>>print(a_list) # [1, 4, 5, 5, 6, 12, 12, 12]
四、 本节回顾总结
1) Python中列表和元组有哪些区别?
2) 如何通过索引获取子序列?
3) 列表和元组支持哪些运算?
4) 获取列表和元组的长度、最大值和最小值?
5) 列表中元素的增加、删除和修改?
6) 关于列表的其它常用方法?