Python 程序设计课内实验 · 3.1 列表和元组

图例代码速查 · 共 43 张图 / 135 行代码 · 红框转写 31 张

图 1 红框 1 行

1、环境准备 输入【ipython3】进入Python的解释器中。如图1所示。

ipython3

图 2 红框 6 行

【list2 = ['a','b','c','d']】字符串列表 【list3 = ['simpleedu',123,'shiyanbar',456]】字符串与数字列表 获取list的元素值。如图3所示。

list1 = [1,2,3,4,5]
list1
list2 = ['a','b','c','d']
list2
list3 = ['simpleedu',123,'shiyanbar',456]
list3

图 3 红框 2 行

【list1[0]】获取list1下标为0的元素值 【list2[1:5]】获取list2下标为1到下标为n-1的值,其中n为‘:’后的元素值,此处n为5 修改元素值。如图4所示。

list1[0]
list2[1:5]

图 4 红框 3 行

修改元素值。如图4所示。 【list3[2] = 'simpleware'】修改list3下标为2的元素值 删除元素。如图5所示。

list3[2]
list3[2] = 'simpleware'
list3

图 5 红框 3 行

删除元素。如图5所示。 【del list1[2]】删除list1下标为2的元素值 列表的长度。如图6所示。

list1
del list1[2]
list1

图 6 红框 3 行

【 [1,2,3] + [4,5,6]】列表相加 【['Hi!'] * 4】列表乘 逻辑判断。如图7所示。

len([1,2,3,4,5])
[1,2,3] + [4,5,6]
['Hi!'] * 4

图 7 红框 2 行

【3 in [1,2,3]】逻辑判断 【for x in [1,2,3]:print(x)】迭代 列表截取。如图8所示。

3 in [1,2,3]
for x in [1,2,3]:print(x)

图 8 红框 4 行

【aList[-2]】截取下标为-2的元素值 【aList[1:]】截取下标1及以后的元素值

aList = ['shiyanbar','simpleedu',123,'simpleware',456]
aList[2]
aList[-2]
aList[1:]

图 9 红框 3 行

3、List列表内置函数 【len()】 方法返回列表元素个数。如图9所示。 【max()】 方法返回列表元素中的最大值。

list1,list2 = [123,'shiyanbar','simpleedu',456],['simpleedu',123]
print(len(list1))
print(len(list2))

图 10 红框 3 行

【max()】 方法返回列表元素中的最大值。 【min()】 方法返回列表元素中的最小值。如图10所示。 【list()】 方法用于将元组转换为列表。如图11所示。

list1 = ['shiyanedu','shiyanbar','u-saas','python']
print(max(list1))
print(min(list1))

图 11 红框 4 行

【list()】 方法用于将元组转换为列表。如图11所示。 注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。

aTuple = (123,'simpleware','shiyanbar',456)
aList = list(aTuple)
print(aList)
print(aTuple)

图 12 红框 4 行

【append() 】方法用于在列表末尾添加新的对象。 该方法无返回值,但是会修改原来的列表。如图12所示。 【count() 】方法用于统计某个元素在列表中出现的次数。

aList = ['shiyanbar',456,'simple',123]
print(aList)
aList.append('simpleedu')
print(aList)

图 13 红框 3 行

【count() 】方法用于统计某个元素在列表中出现的次数。 返回元素在列表中出现的次数。如图13所示。 【extend()】 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。

aList = ['simpleedu','shiyanbar','shiyanbar','simpleedu','shiyanbar']
print(aList.count('simpleedu'))
print(aList.count('shiyanbar'))

图 14 红框 4 行

【extend()】 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。 该方法没有返回值,但会在已存在的列表中添加新的列表内容。如图14所示。 【index()】 函数用于从列表中找出某个值第一个匹配项的索引位置。

aList = ['shiyanbar','simpleware',123]
bList = [456,'simpleedu']
aList.extend(bList)
print(aList)

图 15 红框 3 行

【index()】 函数用于从列表中找出某个值第一个匹配项的索引位置。 该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。如图15所示。 【insert()】 函数用于将指定对象插入列表的指定位置。

aList = ['simpleedu','simpleware','shiyanbar','simpleedu','shiyanbar']
print(aList.index('simpleedu'))
print(aList.index('shiyanbar'))

图 16 红框 3 行

【insert()】 函数用于将指定对象插入列表的指定位置。 该方法没有返回值,但会在列表指定位置插入对象。如图16所示。 【pop() 】函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。如图17所示。

aList = ['shiyanbar','simpleware',123]
aList.insert(1,'simpleedu')
print(aList)

图 17 红框 4 行

图16 【pop() 】函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。如图17所示。 【remove()】 函数用于移除列表中某个值的第一个匹配项。

aList = [456,'simpleware',123,'simpleedu','shiyanbar']
print(aList.pop())
print(aList.pop(1))
print(aList)

图 18 红框 3 行

【remove()】 函数用于移除列表中某个值的第一个匹配项。 该方法没有返回值但是会移除两种中的某个值的第一个匹配项。如图18所示。 【reverse()】 函数用于反向列表中元素。

aList = ['simpleedu','shiyanbar','shiyanbar','simpleedu','shiyanbar']
aList.remove('simpleedu')
print(aList)

图 19 红框 3 行

【reverse()】 函数用于反向列表中元素。 该方法没有返回值,但是会对列表的元素进行反向排序。如图19所示。 【sort()】 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。

aList = [456,'simpleware',123,'simpleedu','shiyanbar']
aList.reverse()
print(aList)

图 20 红框 3 行

【sort()】 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。 该方法没有返回值,但是会对列表的对象进行排序。如图20所示。 【clear()】函数用于清空列表,类似于 del a[:]。如图21所示。

aList = ['python','u-saas','shiyanbar','simpleedu','simpleBDT']
aList.sort()
print(aList)

图 21 红框 3 行

图20 【clear()】函数用于清空列表,类似于 del a[:]。如图21所示。 【copy()】函数用于复制列表,类似于 a[:]。如图22所示。

aList = ['python','u-saas','shiyanbar','simpleedu','simpleBDT']
aList.clear()
print(aList)

图 22 红框 3 行

图21 【copy()】函数用于复制列表,类似于 a[:]。如图22所示。

aList = ['python','u-saas','shiyanbar','simpleedu','simpleBDT']
bList = aList.copy()
print(bList)

图 23 红框 4 行

【tup3 = ()】空元组 【tup4 = (1,)】元组中只包含一个元素时,需要在元素后面添加逗号 获取Tuple的元素值,如图24所示。

tup1 = ('python','numpy',2018,834525)
tup2 = (1,2,3,4,5)
tup3 = ()
tup4 = (1,)

图 24 红框 2 行

【tup1[0]】获取tup1下标为0的元素值 【tup2[1:5]】获取tup2下标为1与下标为5的元素值 元组中的元素值是不允许修改的,但可以对元组进行连接组合,如图25所示。

tup1[0]
tup2[1:5]

图 25 红框 4 行

元组中的元素值是不允许修改的,但可以对元组进行连接组合,如图25所示。 【tup3 = tup1 + tup2】创建新的元组 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。元组被删除后,输出变量会有异常信息。如图26所示。

tup1 = (1,2,3)
tup2 = ('a','b','c')
tup3 = tup1 + tup2
tup3

图 26 红框 4 行

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。元组被删除后,输出变量会有异常信息。如图26所示。 【del tup1】删除指定的tup1 判断元组的长度,如图27所示。

tup1 = ('python','numpy',2018,834525)
tup1
del tup1
tup1

图 27 红框 3 行

【 (1,2,3) + (4,5,6)】元组相加 【('Hi!',) * 4】元组乘 元组数据逻辑判断,如图28所示。

len((1,2,3))
(1,2,3) + (4,5,6)
('Hi!',) * 4

图 28 红框 2 行

【3 in (1,2,3)】逻辑判断 【for x in (1,2,3):print(x,)】迭代 元组数据的截取,如图29所示。

3 in (1,2,3)
for x in (1,2,3):print(x,)

图 29 红框 4 行

【tup[-2]】截取下标为-2的元素值 【tup[1:]】截取下标1及以后的元素值

tup = ('simpleware','shiyanbar','simpleedu')
tup[2]
tup[-2]
tup[1:]

图 30 红框 3 行

【max()】 方法返回元组元素中的最大值。 【min()】 方法返回元组元素中的最小值。 【tuple()】 方法用于将列表转换为元组。如图31所示。

tup = ('simpleware','shiyanbar','simpleedu','simpleBDT')
max(tup)
min(tup)

图 31 红框 2 行

【tuple()】 方法用于将列表转换为元组。如图31所示。 注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。

aList = ['shiyanbar',456,'simpleware',123]
tuple(aList)

图 32 无红框 · 仅命令

7、 整数 输入命令“name=[‘Tom’,’jack’,’Beta’]”生成一个name列表、输入命令“name”,查看name列表中的数值、输入命令“len(name)”,查看name列表中元素个数。如图32所示

name=['Tom','jack','Beta']
name
len(name)

图 33 无红框 · 仅命令

图32 输入命令“name[0]”、“name[1]”、“name[2]“、“name[3]”。列表索引从数值0开始,其中name[3]超出索引范围,报IndexError错误,最后一个元素的索引是len(name)-1。如图33所示

name[0]
name[1]
name[2]
name[3]

图 34 无红框 · 仅命令

图33 输入命令“name[-1]”、输入命令“name[len(name)-1]”取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素。如图34所示

name[-1]
name[len(name)-1]

图 35 无红框 · 仅命令

图34 输入命令“name.append(‘admin’)”、输入命令“name”,查看name列表元素个数,append()方法默认在列表末尾插入元素。输入命令“name.insert(1,‘administrator’)”、输入命令“name”,查看name列表元素个数,insert()方法在指定位置插入元素。如图35所示

name.append('admin')
name
name.insert(1,'administrator')
name

图 36 无红框 · 仅命令

图35 输入命令“name.pop()”、输入命令“name”,查看name列表元素个数,pop()方法默认弹出列表末尾元素。输入命令“name.pop(1)”、输入命令“name”,查看name列表元素个数,pop(索引)弹出指定位置元素、输入命令“name[0]=‘Bob’”、输入命令“name”,查看name列表元素个数,把指定元素替换成其它元素,直接赋值给对应的索引位置。如图36所示

name.pop()
name
name.pop(1)
name
name[0]='Bob'
name

图 37 无红框 · 仅命令

图36 输入命令“M=[‘orange’,’8264’,’purple’]”、输入命令“M”,查看列表元素,列表中可以包含元素的不同数据类型。输入命令“L=[‘pink’,’[‘bears’,‘pigs’,‘penguins’]’,’blue’]”、输入命令“L”,查看列表元素,列表中可以包含列表,形成二维数组。如图37所示

M=['orange','8264','purple']
M
L=['pink',['bears','pigs','penguins'],'blue']
L

图 38 无红框 · 仅命令

图37 输入命令“L[1][1]”输出二位数组中“pigs“元素。如图38所示

L
L[1][2]

图 39 无红框 · 仅命令

8、 元组 输入命令“test=(‘chair’,‘desk’,‘window’)”创建一个包含三个元素的test元组、输入命令“test[0]”、输入命令“test[1]”、输入命令“test[2]“,查看test元组包含元素。元组创建后不能改变,append(),insert()方法。如图39所示

test=('chair','desk','window')
test[0]
test[1]
test[2]

图 40 无红框 · 仅命令

图39 输入命令“sz=(1)”、输入命令“yz=(1,)”,在python中括号()既可以表示元组,又可以表示数学公式中的小括号,产生了歧义,默认按小括号进行计算。在只有1个元素的元组定义时,在末尾必须加一个逗号。如图40所示

sz=(1)
sz
yz=(1,)
yz

图 41 无红框 · 仅命令

图40 输入命令“x=('bell',['mouse','bath'],'bed')”、输入命令“x[1][0]='beige'”、输入命令“x[1][1]='rad’”、输入命令“x”,查看元组包含的元素。如图41所示

x=('bell',['mouse','bath'],'bed')
x[1][0]='beige'
x[1][1]='red'
x

图 42 无红框 · 仅命令

图41 X元组初始化时,包含的3个元素,分别是字符串'bell'、字符串'bed'和一个list。如图42所示

示意图:元组内含列表的内存结构(无代码)

图 43 无红框 · 仅命令

图42 列表中的元素'mouse'和'bath'修改为'beige'和'rad'。元组包含元素内容变了,但内容改变的为list元素。tuple指向的list没有改变。元组指向永远不变。但指向的list本身是可变的。要创建一个内容也不变的元组,必须保证元组的每一个元素本身也不能变。如图43所示

示意图:修改元素后的内存结构(无代码)