1、什么叫列表生成式
可以生成list列表的表达式,是Python内置的一种强大的功能。
1.1、Python 列表(List)
python里面 [ ]
列表是最常用的Python数据类型
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
list = [1,2,3,4,5,6,7]
索引的值从0开始,也可以从最后一个开始数,那么最后一个就是倒数第一,也就是-1,以此类推
list_num = [1, 2, 3, 4, 5, 6, 7]
# 输出索引为0的值并打印
print(list_num[0])
# 输出索引为-1的值并打印
print(list_num[-1])
# 用索引值来修改列表
list_num[3] = 10
# 打印列表
print(list_num)
打印结果如下
对列表进行切片操作:
list_num = [1, 2, 3, 4, 5, 6, 7]
# 对列表进行切片操作 切片遵循左闭右开原则
list_num1 = list_num[0:-1]
# 打印列表list_num1
print(list_num1)
打印结果如下
1.2、快速生成一个列表
快速生成一个列表可以用range()函数来生成:
注意:此时提到了rangge函数
概念:range() 函数可创建一个整数列表,一般用在 for 循环中。
遵循左闭右开
# 使用range()函数快速生成列表
# 首先定义一个空列表
list_num = []
# 使用for循环编列range函数,range函数同样遵循左闭右开原则
for i in range(0, 10):
# 使用append()函数向列表中追加元素
list_num.append(i)
# 打印列表
print(list_num)
输出结果:
1.2使用列表生成式
列表生成式简而言之:用一个表达式即可生成列表
上面我们使用了for循环和range函数来快速生成了一个列表,那么怎么用一个表达式来生成一个列表呢?下面我们来看看答案:
# 首先定义一个列表
list_a = [1, 2, 3, 4, 5]
# 使用列表生成式
list_b =[x for x in list_a]
# 打印列表list_b
print(list_b)
输出结果:
2.案列
1> 已知列表list = ["pYTHON","iS","eASY"]【使用列表生成式实现】,生成一个新的列表,并且结果大小写字母互换。
# 已知列表list = ["pYTHON","iS","eASY"]【使用列表生成式实现】,生成一个新的列表,并且结果大小写字母互换
# 首先了解大小写互换函数
a = 'aBcD'
print('大小写转换函数swapcase()')
print(a.swapcase())
list_one = ["pYTHON", "iS", "eASY"]
print('源列表:' + str(list_one))
# 定义普通转换方法的函数
def String_td(a):
list_two = []
# 普通方法
for i in a:
list_two.append(i.swapcase())
return list_two
print('下面输出普通方法(for遍历)转换结果:')
# 调用函数
print(String_td(list_one))
# 使用列表生成式
print('下面使用列表生成式转换:')
list_three = [x.swapcase() for x in list_one]
print(list_three)
输出结果:
2>如果想对一个列表里面的数据筛选,比如:[1, 3, -3, 4, -2, 8, -7, 6],找出大于0的数,按正常思维可以for循环挨个判断,符合条件的放到新的列表
# 如果想对一个列表里面的数据筛选,比如:[57, 3, -3, 4, 9, -8, 11, -66],找出大于0的数
# 按正常思维可以for循环挨个判断,符合条件的放到新的列表
# 定义一个列表
list_a = [57, 3, -3, 4, 9, -8, 11, -66]
# 定义一个空列表,存储需要的数据
list_b = []
# for循环遍历列表list_a
for i in list_a:
# 加入判断筛选数据
if i > 0:
# 大于0的数据追加到list_b
list_b.append(i)
# 打印list_b
print(list_b)
# 使用列表生成式
list_c = [x for x in list_a if x > 0]
print(list_c)
输出结果:
3>前面两个案列列表生成式都只传一个参数x,如果有两个列表如何去运算呢?
举例:a = [1,2,3] b = [ 'A' , 'B' , 'C' ] 生成 ls = [ 'A1' , 'B2' , 'C3 '
先来看看普通for循环:
# 举例:a = [1,2,3] b = [ 'A' , 'B' , 'C' ] 生成 ls = [ 'A1' , 'B2' , 'C3 '
a = [1, 2, 3]
b = ['A', 'B', 'C']
ls = []
# 获取0,1,2,用作原始列表的下标,索引原始列表的元素,以便于操作
for i in range(0, 3):
# int和str不能直接拼接,先将int转为str
x = b[i] + str(a[i])
ls.append(x)
print(ls)
输出结果:
使用列表生成式:
# 举例:a = [1,2,3] b = [ 'A' , 'B' , 'C' ] 生成 ls = [ 'A1' , 'B2' , 'C3 '
a = [1, 2, 3]
b = ['A', 'B', 'C']
ls = []
# # 获取0,1,2,用作原始列表的下标,索引原始列表的元素,以便于操作
# for i in range(0, 3):
# # int和str不能直接拼接,先将int转为str
# x = b[i] + str(a[i])
# ls.append(x)
# print(ls)
# 使用列表生成式
ls_1 = [x + str(i) for i, x in zip(a, b)]
print(ls_1)
输出结果: