思考:有一个人的姓名(laowang)怎么书写存储程序?
用 变量。如:name = 'laowang'
但是,如果要记录很多人的名字,怎么办?
思考:
如果一个班级100位学生,每个人的姓名都要存储,应该如何书写程序?声明100个变量吗?
不可能一直写那么多,针对这种,Python设置用列表解决。列表一次可以存储多个数据。
在Python中,这种数据类型称为列表。但是在其他的编程语言中,如Java、PHP、Go等等中其被称为数组。
列表序列名称 = [列表中的元素1, 列表中的元素2, 列表中的元素3, ...]
列表序列名称也就是类似一个变量名
案例:
定义一个列表,用于保存苹果、香蕉以及菠萝
代码:
list1 = ['apple', 'banana', 'pineapple']
# list列表类型支持直接打印
print(list1)
# 打印列表的数据类型-----type 查看数据类型
print(type(list1))
注意:列表可以一次存储多个数据且可以为不同的数据类型
相关链接:Python的数据类型:Python中变量的数据类型-CSDN博客
列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:
增、删、改、查。
列表在计算机中的底层存储形式,列表和字符串一样,在计算机内存中都占用一段连续的内存地址,我们向访问列表中的每个元素,都可以通过"索引下标"的方式进行获取。
如果想获取列表中的某个元素,非常简单,直接使用 索引下标:
代码:
list1 = ['apple', 'banana', 'pineapple'] # 获取列表中的banana---------索引从0开始,0 1 2 3 ……………… print(list1[1])
查 操作的相关方法:
编号 | 函数 | 作用 |
---|---|---|
1 | index() | 指定数据所在位置的下标------in dex 在哪里 |
2 | count() | 统计指定数据在当前列表中出现的次数 |
3 | in | 判断指定数据 在 某个列表序列,如果 在 返回True,否则 不存在 就返回False |
4 | not in | 判断指定数据 不在 某个列表序列,如果不在返回True,否则 不存在 返回False |
index 英 /ˈɪndeks/
n. 索引;(物价和工资等)指数;指标,量度;幂,根指数;指针
v. 为……编索引,将……编入索引;使指数化,将(工资)等与(物价水平等)挂钩;(机器,部件)转位
count 英 /kaʊnt/
v. (按顺序)数数;计数,点数目;把……算入,包括;重要;被允许,被接受;看作,认为
n. 计算,总数;数数;量的计数;(被指控的)罪状,事项;论点,观点;伯爵;(纱线的)支数
案例:
# 1、查找某个元素在列表中出现的位置(索引下标)----索引从0开始,0 1 2 3 ……………… list1 = ['apple', 'banana', 'pineapple'] print(list1.index('apple')) # 0 # print(list1.index('peach')) # 报错 # 2、count()方法:统计元素在列表中出现的次数 list2 = ['刘备', '关羽', '张飞', '关羽', '赵云'] # 统计一下关羽这个元素在列表中出现的次数 print(list2.count('关羽')) # 3、in方法和not in方法(黑名单系统)-----如果 在 返回True,否则 不存在 就返回False list3 = ['192.168.1.15', '10.1.1.100', '172.35.46.128'] if '10.1.1.100' in list3: print('黑名单IP,禁止访问') else: print('正常IP,访问站点信息')
编号 | 函数 | 作用 |
---|---|---|
1 | append() | 增加指定数据到列表中 |
2 | extend() | 列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表 |
3 | insert() | 指定位置新增数据 |
append() :在列表的 尾部 追加元素
append 英 /əˈpend/ v. <正式>附加,增补
names = ['孙悟空', '唐僧', '猪八戒'] # 在列表的尾部追加一个元素"沙僧" names.append('沙僧') # 打印列表 print(names)
注意:列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,故列表为可变类型数据。
列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表
案例:
list1 = ['Tom', 'Rose', 'Jack'] # 1、使用extend方法追加元素"Jennify" # names.extend("Jennify") # print(names) # 2、建议:使用extend方法两个列表进行合并 list2 = ['Hack', 'Jennify'] list1.extend(list2) print(list1)
总结:extend方法比较适合于两个列表进行元素的合并操作
作用:在指定的位置增加元素
names = ['薛宝钗', '林黛玉'] # 在薛宝钗和林黛玉之间,插入一个新元素"贾宝玉" names.insert(1, '贾宝玉') print(names)
编号 | 函数 | 作用 |
---|---|---|
1 | del 列表[索引] | 删除列表中的某个元素 |
2 | pop() | 删除指定下标的数据(默认为最后一个),并返回该数据 |
3 | remove() | 移除列表中某个数据的第一个匹配项。 |
4 | clear() | 清空列表,删除列表中的所有元素,返回空列表。 |
基本语法:
names = ['Tom', 'Rose', 'Jack', 'Jennify'] # 删除Rose del names[1] # 打印列表 print(names)
作用:删除指定下标的元素,如果不填写下标,默认删除最后一个。其返回结果:就是删除的这个元素
names = ['貂蝉', '吕布', '董卓'] del_name = names.pop() # 或 # del_name = names.pop(1) print(del_name) print(names)
作用:删除匹配的元素
fruit = ['apple', 'banana', 'pineapple'] fruit.remove('banana') print(fruit)
清空列表
names = ['貂蝉', '吕布', '董卓'] # 随着故事的发展,人物都game over names.clear() # 打印列表 print(names)
编号 | 函数 | 作用 |
---|---|---|
1 | 列表[索引] = 修改后的值 | 修改列表中的某个元素 |
2 | reverse() | 将数据序列进行倒叙排列 |
3 | sort() | 对列表序列进行排序 |
4 | copy() | 对列表序列进行拷贝 |
list1 = ['貂蝉', '大乔', '小乔', '八戒'] # 修改列表中的元素 list1[3] = '周瑜' print(list1) list2 = [1, 2, 3, 4, 5, 6] list2.reverse() print(list2) list3 = [10, 50, 20, 30, 1] list3.sort() # 升序(从小到大) # 或 # list3.sort(reverse=True) # 降序(从大到小) print(list3) list4 = list3.copy() print(list4)