Python之--列表
定义
由一系列的按特定顺序排列的元素组成。
特点
(1)列表是Python中内置的可变序列;
(2)在Python中使用 [ ] 定义列表,元素与元素之间使用英文的逗号分隔;
(3)列表中的元素可以是任意的数据类型;
列表的创建方式
(1) 使用 [ ] 直接创建列表
语法结构: 列表名=[element1,element2,......elementN]
#直接用[ ]创建
list1=['hello','world',1,2,3]
print(list1)
(2)使用内置函数 list() 创建列表
语法结构: 列表名=list(序列)
#使用内置函数list()创建
list2=list('happy')
print(list2)
list3=list(range(0,10,2))#从0开始计数,计数到9结束,以2为步长
print(list3)
(3)使用列表生成式
核心是 “通过计算 / 筛选生成新元素” (按需计算动态生成列表)。
语法结构:
(1)基本形式 lst=[expression for item in range]
遍历 range 中的每一个元素 item,然后根据 expression 对 item 进行处理,将结果放入新的列表中。
# 示例1:生成包含1到10整数的平方的列表
squares = [i ** 2 for i in range(1, 11)]
print(squares)
# 输出: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]# 示例2:将一个字符串列表中的所有字符串转为大写
words = ["apple", "banana", "cherry"]
upper_words = [word.upper() for word in words]
print(upper_words)
# 输出: ['APPLE', 'BANANA', 'CHERRY']
(2)带条件判断形式 lst=[expression for item in range if condition]
遍历 range 中的元素 item 时,会根据 if condition 对元素进行筛选,只有满足条件的元素才会按照 expression 进行处理并放入新列表中。
# 示例1:生成1到20中所有偶数的平方的列表
even_squares = [i ** 2 for i in range(1, 21) if i % 2 == 0]
print(even_squares)
# 输出: [4, 16, 36, 64, 100, 144, 196, 256, 324, 400]# 示例2:从字符串列表中筛选出长度大于5的字符串,并转为大写
long_words = [word.upper() for word in words if len(word) > 5]
print(long_words)
# 假设words = ["apple", "banana", "cherry"]
# 输出: ['BANANA']
列表的一些常见操作
这里我直接把用法以代码的形式展示出来并提供运行截图,方便大家对照着理解。
#相加操作
print(list1+list2+list3)#相乘操作
print(list3*3)#找最值
print(max(list3))
print(min(list3))#求和
print(sum(list3))#统计
print(list2.count('o'))#第一次出现位置
print(list2.index('p'))#删除列表
list4=[1,2,3]
print(list4)
del list4[0]
print(list4)
del list4
print(list4)
大家这里的报错是为了形象地为大家展示,执行 del list4 这个语句以后,list4已经不存在了,所以说 print(list4) 时会报错。
**一开始我比较好奇,用混合型数据列表来找最值可以成功吗(毕竟里面也有好几个整型元素),于是我尝试用 list1 进行找最值 ,但是被报错了,,因为 list1 里有字符串和整数,不同类型无法比较大小。
print(max(list1))
列表的遍历
(1)使用遍历循环for遍历列表元素
lst=['hello','world','nice']
# 第一种遍历方式使用遍历循环for遍历列表元素
for item in lst:print(item)
(2)使用for循环,range()函数,len()函数,根据索引进行遍历
lst=['hello','world','nice']
# 第二种遍历方式使用for循环,range()函数,len()函数,根据索引进行遍历
for i in range(0, len(lst)):print(i, '->', lst[i])#i为索引,lst[i]为元素
(3)enumerate函数的使用
语法结构 for index ,item in enumerate(lst): 输出index和item
lst=['hello','world','nice']
# 第三种遍历方式使用enumerate()函数
for index, item in enumerate(lst):print(index, item)#index是序号,不是索引,可以手动修改序号起始值# 手动修改序号的起始值
for index, item in enumerate(lst, start=1):#start不写,直接写成for index, item in enumerate(lst, 1):也可以print(index, item)#现在index的序号从1开始
列表的一些特殊操作方法
列表的方法 | 描述说明 |
---|---|
lst.append(x) | 在列表 lst 最后增加一个元素 |
lst.insert(index,x) | 在列表中第 index 位置增加一个元素 |
lst.clear() | 清除列表 lst 中所有元素 |
lst.pop(index) | 将列表 lst 中第 index 位置的元素取出,并从列表中将其删除 |
lst.remove(x) | 将列表 lst 中出现的第一个元素 x 删除 |
lst.reverse() | 将列表 lst 中的元素反转 |
lst.copy() | 拷贝列表 lst 中的所有元素,生成一个新的列表 |
列表排序的两种方式
1. 列表对象的 sort 方法
语法:lst.sort(key=None, reverse=False)
- key:表示排序的规则(可自定义排序依据,如按元素长度、某一属性等 )
- reverse:表示排序方式(默认 False 为升序,True 为降序 )
作用:直接修改原列表,对列表元素进行排序
#没有指定 key 和 reverse 参数时,默认升序排序,原列表 lst 被直接修改
lst = [5, 3, 8, 1, 2]
lst.sort()
print(lst)#降序排序
lst = [5, 3, 8, 1, 2]
lst.sort(reverse=True)
print(lst)#根据自定义规则排序(比如按字符串长度)
lst = ["apple", "banana", "pear", "kiwi"]
lst.sort(key=len)
print(lst)
2. 内置函数 sorted ()
语法:sorted(iterable, key=None, reverse=False)
- iterable:表示排序的对象(传入列表、元组等可迭代数据 )
- key:表示排序的规则(同 sort 方法,自定义排序逻辑 )
- reverse:表示排序方式(默认 False 为升序,True 为降序 )
作用:不修改原数据,返回一个新的已排序的列表
#升序排序
lst = [5, 3, 8, 1, 2]
new_lst = sorted(lst)
print(lst)
print(new_lst)#降序排序
lst = [5, 3, 8, 1, 2]
new_lst = sorted(lst, reverse=True)
print(lst)
print(new_lst)#根据自定义规则排序
#1、对多个单词组成的列表进行排序
words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words) # 默认按首字母升序排列
print(sorted_words) #2、拓展:按字典中某个值排序
students = [{"name": "Alice", "age": 20},{"name": "Bob", "age": 18},{"name": "Charlie", "age": 22}
]
#按照字典中 "age" 的值对列表中的字典进行升序排序
new_students = sorted(students, key=lambda x: x["age"])
print(students)
print(new_students)
** 按照字典中 "age" 的值对列表中的字典进行升序排序时,这里使用了匿名函数 lambda 来指定排序规则,我来给大家拓展一下这里的匿名函数 lambda:
lambda是一种创建匿名函数(即没有显式定义函数名的临时函数)的语法。它主要用于快速定义简单的、一次性使用的函数,通常作为参数传递给其他函数(如sorted()、map()、filter()等)。
基本语法
lambda 参数列表: 表达式
- 参数列表:函数的输入参数(如x、x, y)。
- 表达式:函数的返回值(只能有一个表达式,不能包含复杂的逻辑)。
等价于
def 函数名(参数列表):return 表达式
用匿名函数 lambda 的优势
在需要临时传入一个简单函数时非常方便,它能让代码更简洁。
譬如:
# 普通函数定义
def get_age(person):return person["age"]# 等价的 lambda 函数
lambda person: person["age"]#示例2--按字符串长度排序words = ["apple", "banana", "pear"]
sorted_words = sorted(words, key=lambda x: len(x))
# 输出: ['pear', 'apple', 'banana']
lambda 函数的特点
(1)简洁性:无需定义函数名,适合简单逻辑。
(2)一次性使用:通常作为参数传递后就不再使用。
(3)单一表达式:不能包含复杂的语句(如循环、条件判断)。
今天的分享就到这里啦~~
希望今天分享的内容也能帮到你!!