在Python语言中,所谓的列表生成式,就是说可以生成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(起始值,终止值,步长) 遵循左闭右开
# 使用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)
输出结果:
待续.....
2019-11-30
01:39:36