Python —— 列表
1 定义
用于存储任意数目、任意类型的数据集合。
List (列表)是 Python 内置的一种数据类型。
标准语法格式:
1. a = [10,20,30,40]
2. a = [10,20,‘abc’,True]
是一种有序的集合,可以随时增加或删除其中的元素。标识是中括号[ ]。
2 创建
2.1 基本语法创建
a=[10,20,'yangyaqi','石家庄学院',True]
a
[10, 20, ‘yangyaqi’,‘石家庄学院’,True]
a=[]
[]
2.2 list()函数创建列表
使用list()可以将任何可迭代的数据转化成列表。
在使用 list() 函数创建列表时,一定要注意双括号。
在Python中,我们可以使用 list() 函数将字符串、元组、字典和集合等其他类似对象转换为列表
b=list() #创建空列表
b=list(range(10))
b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
this_list = list(('apple', 'banana', 'cherry'))
this_list
[‘apple’, ‘banana’, ‘cherry’]
this_list=list('apple')
this_list
[‘a’, ‘p’, ‘p’, ‘l’, ‘e’]
3 常用方法
方法 | 要点 | 描述 |
---|---|---|
list.append(x) | 增加元素 | 将元素x增加到列表list尾部 |
list.extend(aList) | 增加元素 | 将列表alist所有元素加到列表list尾部 |
list.insert(index,x) | 增加元素 | 在列表list指定位置index处插入元素x |
list.remove(x) | 删除元素 | 在列表list中删除首次出现的指定元素x |
list.pop(lindex]) | 删除元素 | 删除并返回列表list指定为止index处的元素,默认是最后一个元素 |
list.clear() | 删除所有元素 | 删除列表所有元素,并不是删除列表对象 |
list.index(x) | 访问元素 | 返回第一个x的索引位置,若不存在x元素抛出异常 |
list.count(x) | 计数 | 返回指定元素x在列表list中出现的次数 |
len(list) | 列表长度 | 返回列表中包含元素的个数 |
list.reverse() | 翻转列表 | 所有元素原地翻转 |
list.sort() | 排序 | 所有元素原地排序 |
list.copy() | 浅拷贝 | 返回列表对象的浅拷贝 |
4 操作
4.1 元素层面
4.1.1 元素的提取
偏移量:
列表的偏移量从0开始
列表名后带偏移量的中括号,对应相应位置的元素通过偏移量对列表进行定位
在嵌套的列表中也是如此列表
4.1.2 元素的修改
使用赋值语句修改
4.1.3 元素的增加
+运算符操作
并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中。这样,会涉及大量的复制操作,对于操作大量元素不建议使用。
append.函数
原地修改列表对象,是真正的列表尾部添加新的元素,速度最快,推荐使用。
extend()方法
将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。
insert()插入元素
使用insert()方法可以将指定的元素插入到列表对象的任意制定位置。这样会让插入位置后面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。类似发生这种移动的函数还有:remove()、pop()、del(),它们在删除非尾部元素时也会发生操作位置后面元素的移动。
extend()方法
将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。
功能:括号里放一个元素,可将该元素添加到列表末尾
格式为:列表名append0
4.1.4 元素的删除
del方法
a=[100,200,888,300,400] del a[1] a
[100, 888, 300, 400]
pop方法
删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素。
a=[10,20,30,40,50] a.pop() a
[10, 20, 30, 40]
remove()方法
删除首次出现的指定元素,若不存在该元素抛出异常。
a = [10,20,30,40,50,20,30,20,30] a.remove(20) #这里的20是数据,不是索引 a
[10, 30, 40, 50, 20, 30, 20, 30]
功能:删除列表元素
格式为: del 列表名偏移量
4.2 列表层面
4.2.1 列表的切片
从列表中提取一段连续的数据,生成一个新列表
通过偏移量对列表范围进行定位
[1:3]的范围为1<=x<3,包头不包尾
冒号左右的值可不填,冒号某侧不取值则取到底
4.2.2 列表的修改
直接使用赋值语句
4.2.3 列表的增加
使用运算符号 +
注意:符号+只能用于列表间合并
4.2.4 列表的删除
使用del
4.2.5 列表的遍历
for obj in listObj: print(obj)
for x in a: print(x,end="#")
10#20#30#40#50#20#30#20#30#
4.2.6 复制列表所有的元素到新列表对象
list1 = [30,40,50] list2 = list1
list1 = [30,40,50] list2 = [] + list1
4.2.7 列表排序
sort方法
a.sort()
sorted方法:返回新列表,不对原列表做修改。
a = sorted(a)
reversed()返回迭代器:支持进行逆序排列,不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。
c = reversed(a)
5 range()创建整数列表
range()可以帮助我们非常方便的创建整数列表,这在开发中及其有用。为:
start参数:可选,表示起始数字。默认是0
end参数:必选,表示结尾数字。
step参数:可选,表示步长,默认为1
python3中range()返回的是一个range对象,而不是列表。我们需要通过list()方法将其转换成列表对象。
语法格式:range([start,] end [,step])
list(range(3,15,2))
[3, 5, 7, 9, 11, 13]
6 列表推导式
列表推导式是 Python 中一种简洁而强大的工具,用于创建列表对象的一种快捷方式。它允许我们以一行代码生成列表,并且可以在生成过程中对元素进行筛选、变换和组合。
语法格式
[expression1 if condition else expression2 for item in iterable]
result = []
for item in iterable:
if condition1:
result.append(expression1(item))
else:
result.append(expression2(item))
numbers = [1, 2, 3, 4, 5]
even_odd = ['even' if num % 2 == 0 else 'odd' for num in numbers]
print(even_odd)
[‘odd’, ‘even’, ‘odd’, ‘even’, ‘odd’]
[expression for item in iterable]
其中,expression 是生成列表元素的计算表达式,item 是可迭代对象中的每个元素,iterable 是一个可迭代对象(如列表、元组、集合等),它相当于:
result = []
for item in iterable:
result.append(expression(item))
[expression for item in iterable if condition]
result = []
for item in iterable:
if condition:
result.append(expression(item))
#筛选偶数的列表:
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers)
[2, 4, 6, 8, 10]
7 多维列表
a=[ ["st1",18,30000,"北京"], ["st2",19,20000,"上海"], ["st3",20,10000,"深圳"],]
#嵌套循环打印二维列表所有的数 for m in range(3): for n in range(4): print(a[m][n],end="\t") print()#打印完一行,换行
st1 18 30000 北京
st2 19 20000 上海
st3 20 10000 深圳