Python入门实践10 ——列表(List)
一、目标
1、列表类似c语言的数组,不过其元素可以是任意类型
2、掌握列表的9大操作
3、学会使用列表的函数和方法
二、要点
1、列表
列表可以看成是一串有序的数据集合,它可以存放任何类型的数据,甚至是不同类型的数据。你可以将它想象成一列队伍,其中有各个国家的人,甚至还要小猫和小狗。
将数据放入一对方括号 [ ] 内来表示列表,数据之间用逗号相隔。
例如,以下是某个四口之家的身高数据列表:
family = [1.73, 1.68, 1.71, 1.89]
- 列表是一种容器,可以容纳各种数据类型。可类比c语言的打了激素的数组。
- 列表是一种序列,每个元素都分配一个数字 ,它的位置或索引,第一个索引是0,第二个索引是1,依此类推。
- 列表可以改变存储的各个元素。
2、列表定义
1)、直接定义和赋值
把逗号分隔的不同的数据项使用方括号括起来即可。
如:family = ["爸爸", "妈妈",["儿子","儿媳","孙子"]];
2)、利用range()快速生成列表。
3、访问列表中的值
使用下标索引来访问列表中的值,列表的第一个元素索引是0,第二个索引是1,依此类推。
列表[整数表达式];
如:family[0]
4、列表的运算
运算 | 说明 | 举例 |
---|---|---|
+ | 拼接列表 | ist1 + list2 |
+= | 原列表与右侧列表拼接后变量绑定新列表 | list1 += list2 |
* | 生成重复的列表 | list1 *3 |
*= | 用原列表生成重复的列表,用变量绑定新生成的列表 | list1 *= 2 |
in / not in | 判断一个值是否存在列表中,如果存在则返回True,否则返回False | 'lsk' in list1 |
列表[整数表达式] | 通过索引赋值来改变列表元素 | list1 [2] |
5、列表切片
在Python中处理列表的部分元素,称之为切片。创建切片,可指定要使用的第一个元素和最后一个元素的索引。
格式:
列表[开始索引:结束索引];
如:
list1=[1,2,3];
list2=list1[1:2];
5、列表操作
列表 的十种操作方法:
1)、添加
用append()在list的末尾添加一个元素。
调用格式:
列表.append(插入元素);
如:
list1=[1,2,3];
list1.append(4);
2)、插入
用insert()在某位插入元素。
调用格式:
列表.insert(插入位置,插入元素);
其中插入位置是从0开始计,插入元素的序号。
如:
list2=[1,2,3];
list2.insert(2,8);
print(list2);
3)、弹出
用pop()弹出的是list的最后一个元素。
调用格式:
列表.pop(弹出元素的位置序号,默认-1,最后一个);
如:
list3=[1,2,3];
list3.pop(1);
print(list3);
4)、删除
用remove()可删除list中的任一元素
调用格式:
列表.remove(列表中元素的值);
如:
list4=[1,2,3];
list4.remove(3);
print(list4);
5)、延长
extend()可以延长list
调用格式:
列表.extend(列表);
如:
list5=[1,2,3,4,5];
list5.extend([6,7,8]);
6)、查找
列表的查找主要有:in、not in、count、index,find 前两种方法是保留字,后两种方式是列表的方法。
方法 | 作用 |
---|---|
元素 in list | 判断值是否在列表中 |
元素 not in list | 判断值是否不再列表中 |
List.count(元素) | 统计指定值在列表中出现的次数 |
List. index (元素) | 查看指定值在列表中出现的次数 |
List.find(元素) string类型 | 如果找到则返回第一个匹配的位置,如果没找到则返回-1,而如果通过index方法去查找的话,没找到的话会报错 |
max(list) | 查找列表最大 |
min(list) | 查找列表最小 |
7)、排序
调用格式:
list.sort(cmp=None, key=None, reverse=False)
参数
-
cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
-key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。 -
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
如:
list7 = [10, 20, 1, 45, 99];
list7.sort();
print(list7);
list7.sort(reverse=True);
print(list7);
8)、反转
reverse() 函数用于反向列表中元素。
9)、遍历
通过循环实现列表元素的遍历。
6、列表的函数
序号 | 函数 | 说明 |
---|---|---|
1 | cmp(list1, list2) | 比较两个列表的元素 |
2 | len(list) | 列表元素个数 |
3 | max(list) | 返回列表元素最大值 |
4 | min(list) | 返回列表元素最小值 |
5 | list(seq) | 将元组转换为列表 |
7、列表的方法
序号 | 方法 | 说明 |
---|---|---|
1 | list.append(obj) | 在列表末尾添加新的对象 |
2 | list.count(obj) | 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) | 将对象插入列表 |
6 | list.pop([index=-1]) | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) | 移除列表中某个值的第一个匹配项 |
8 | list.reverse() | 反向列表中元素 |
9 | list.sort(cmp=None, key=None, reverse=False) | 对原列表进行排序 |
三、步骤
1、新建新建ex10.py文件。
2、录入实例中代码。
3、运行。
四、实例(Python 3.0+)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = ''
__author__ = 'jungle'
__mtime__ = '2019-08-26'
"""
print("-----------list定义-----------------------");
# 方式1:直接定义和赋值
# 列表可以嵌套,即列表里面的元素可以是列表,此外列表中的元素数据类型可以不一致
family = ["爸爸", "妈妈",["儿子","儿媳","孙子"]]
print(family) ;
print(type(family));
# 方式2:利用range快速生成列表
# range(start, stop, step) 以步长为step生成范围为[start, stop)的列表
# 在Python2里用range()可以直接生成列表,但在Python3中为了防止生成的列表没有被使用而造成内存的浪费,没有直接生成列表
list1 = range(1, 10000, 2);
print(list1) ;
print("---------list元素-------------------------");
print(family[0],family[2][2],sep="\n");
print("-------list运算---------------------------");
list1=[1,2,3,4,5];
list2=[5,6,7,8,9,10];
print(list1+list2);
print((list1*3));
print("-------list切片--------------------------");
list1=[1,2,3,4,5,6];
list2=list1[0:2];
print("切片:{},{},{}".format(list2,list1[4:],list1[:-2]));
print("---------list操作-------------------------");
#add
print(help(list.append));
list1=[1,2,3];
list1.append(4);
print("append:",list1);
#inserd
print(help(list.insert));
list2=[1,2,3];
list2.insert(2,8);
print("insert:",list2);
#pop
print(help(list.pop));
list3=[1,2,3,4,5];
list3.pop();
list3.pop(1);
print("pop:",list3);
#remove
print(help(list.remove));
list4=[1,2,3,4,5];
list4.remove(5);
list4.remove(list1[2]);
print("remove:",list4);
#extend
print(help(list.extend));
list5=[1,2,3,4,5];
exlt=[7,8]
list5.extend([6,7,8]);
list5.extend(exlt);
print("extend:",list5);
print("max={},min= {}".format(max(list1),min(list1)));
#查找
list6 = [10, 20, 1, 45, 99];
print("max:", max(list6));
print("index:",list6.index(99));
#sort
list7 = [10, 20, 1, 45, 99];
list7.sort();
print("sort:",list7);
list7.sort(reverse=True);
print("sort:",list7);
#reverse
list8 = [10, 20, 1, 45, 99];
print(list8);
list8.reverse();
print("reverse:",list8);
print("---------list函数和方法-------------------------");
print(dir(list));
五、运行输出:
-----------list定义-----------------------
['爸爸', '妈妈', ['儿子', '儿媳', '孙子']]
range(1, 10000, 2)
---------list元素-------------------------
爸爸
孙子
-------list运算---------------------------
[1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
-------list切片--------------------------
切片:[1, 2],[5, 6],[1, 2, 3, 4]
---------list操作-------------------------
Help on method_descriptor:
append(self, object, /)
Append object to the end of the list.
None
append: [1, 2, 3, 4]
Help on method_descriptor:
insert(self, index, object, /)
Insert object before index.
None
insert: [1, 2, 8, 3]
Help on method_descriptor:
pop(self, index=-1, /)
Remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
None
pop: [1, 3, 4]
Help on method_descriptor:
remove(self, value, /)
Remove first occurrence of value.
Raises ValueError if the value is not present.
None
remove: [1, 2, 4]
Help on method_descriptor:
extend(self, iterable, /)
Extend list by appending elements from the iterable.
None
extend: [1, 2, 3, 4, 5, 6, 7, 8, 7, 8]
max=4,min= 1
max: 99
index: 4
sort: [1, 10, 20, 45, 99]
sort: [99, 45, 20, 10, 1]
[10, 20, 1, 45, 99]
reverse: [99, 45, 1, 20, 10]
---------list函数和方法-------------------------
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
六、代码说明
list1 = range(1, 10000, 2);
range(start, stop, step) 以步长为step生成范围为[start, stop)的列表,在Python2里用range()可以直接生成列表,但在Python3中为了防止生成的列表没有被使用而造成内存的浪费,没有直接生成列表.
print(dir(list));
dir(list):,返回list的属性、方法列表。
注:
1、撰写内容来源于个人收集的文献,属学术探究范畴。
2、版权属于时进军个人,转载需注明。