第5课 列表和元组(20191121)

一、列表和元组

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) 关于列表的其它常用方法?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。