专栏首页Hank’s Blogpython第十七课——列表生成式

python第十七课——列表生成式

1.列表生成式: 什么是列表生成式? 它就是一串表达式,专门用于生成列表对象,当中包含一系列的业务逻辑; 结构:简介、优雅、阅读性好;比传统获取列表对象来的更加的方便; 它是语法糖的一种; 什么是语法糖? 我们在实际开发中,碰到比较复杂的业务逻辑, 可能导致代码的书写量就上去,语法糖的出现就是在不破坏复杂业务逻辑的同时, 使用更加简便、少的代码量来完成一样的需求, 从而解放程序员,让你享受编码的快感... 格式: [expr for ver1,[ver2] in 序列对象(str、range、list、tuple、set、dict...) if ...] 演示列表生成式的使用以及好处: 需求1:生成1~10的列表

#方式一:不使用列表生成式的方式
print(list(range(1,11)))

#方式二:使用列表生成式的方式
print([x for x in range(1,11)])

需求2:生成1+1,2+2,3+3,...,10+10的一个列表

#方式一:不使用列表生成式的方式
lt1=[]
for i in range(1,11):
    lt1.append(i**2)
print(lt1)

#方式二:使用列表生成式的方式
print([x**2 for x in range(1,11)])

需求3:生成1+1,2+2,3+3,...,10+10中只保留偶数的乘积值到列表中

#方式一:不使用列表生成式的方式
lt2=[]
for i in range(1,11):
    if i%2==0:
        lt2.append(i**2)
print(lt2)

for i in range(1,11):
    if i%2!=0:
        lt2.append(i**2)
print(lt2)

#方式二:使用列表生成式的方式
print([x ** 2 for x in range(1,11) if x%2==0])

需求4:实现全接列 a='ABC' b='XYZ' 效果如下: ['AX','AY','AZ','BX',...,'CZ']

a='ABC'
b='XYZ'
#方式一:不使用列表生成式的方式
lt3=[]
for i in a:
    for j in b:
        lt3.append(i+j)
print(lt3)

#方式二:使用列表生成式的方式
print([x+y for x in a for y in b])

需求5:将字典对象中的键和值得到作为一个元素,存入到列表对象中 dic={'AA':'aa','BB':'bb','CC':'cc',} 效果如下: ['AA=aa','BB=bb','CC=cc']

dic={'AA':'aa','BB':'bb','CC':'cc'}
#方式一:不使用列表生成式的方式
lt4=[]
for k,v in dic.items():
    lt4.append(k +'='+v)
print(lt4)

#方式二:使用列表生成式的方式
print([k + '=' + v for k,v in dic.items()])

需求6:将lt=['PYTHON','Java','PHP','UI']中的元素内容都转换小写,然后保存到一个列表中返回

lt=['PYTHON','Java','PHP','UI']
#方式一:不使用列表生成式的方式
lt5=[]
for i in lt:
    lt5.append(i.lower())
print(lt5)

#方式二:使用列表生成式的方式
print([x.lower() for x in lt])

需求7:将lt=['PYTHON','Java','PHP','UI',100]中的元素内容都转换小写,然后保存到一个列表中返回

lt=['PYTHON','Java','PHP','UI',100]
'''
以下代码会出错:
因为lt列表对象中不仅只有str类型的数据,还有int类型的数据。
而lower()函数是属于str中独有的函数,其他类型不会调用;
异常类型:AttributeError

解决方式如下:
我们可以先使用内置函数isinstance(obj,type),如果返回True,表示类型匹配:
反之,不匹配,返回False
'''

print([x.lower() for x in lt])
print([x.lower() for x in lt if isinstance(x,str)])

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python第十二课——for in循环

    1.for...in循环: 有两个使用场景: 场景一:for in和range对象配合使用 range对象的引入讲解 格式:range([start,e...

    hankleo
  • 习题 5: 更多的变量和打印

    “格式化字符串(format string)” - 每一次你使用 ' ’ 或 " " 把一些文本引用起来,你就建立了一个字符串。 字符串是程序将信息展示给人的...

    hankleo
  • python第三十五课——生成器

    1.生成器: 什么是生成器? 它内部封装了一套公式/算法,只有等到需要调用/执行数据时 --> next()函数执行 才会将公式计算得到数据结果,这就是生...

    hankleo
  • Python基础之 List

    披头
  • Python-生成器

    通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅...

    PayneWu
  • python 列表的排列组合

    permutations/combinations/combinations_with_replacement

    用户5760343
  • 【续】分类算法之贝叶斯网络(Bayesian networks)

    在上一篇文章中我们讨论了朴素贝叶斯分类。朴素贝叶斯分类有一个限制条件,就是特征属性必须有条件独立或基本独立(实际上在现实应用中几乎不可能做到完全独立)。当...

    机器学习AI算法工程
  • 卷积神经网络(CNN):从原理到实现

    1.前言 (1)神经网络的缺陷 在神经网络一文中简单介绍了其原理,可以发现不同层之间是全连接的,当神经网络的深度、节点数变大,会导致过拟合、参数过多等问题...

    MachineLP
  • Python写的几个有趣的小游戏

    3.售价分别是3.5 4 2 4.5 写一个函数用来表示贩卖机的功能:4.用户投钱和选择饮料,并通过判断之后,给用户吐出饮料和找零。

    清菡
  • Python基础之序列构成的数组

    容器序列能够存放不同类型的数据,比扁平序列更灵活; 扁平序列只能存放一种类型的原子性的数据,体积更小速度更快。eg:数字,字符字节

    py3study

扫码关注云+社区

领取腾讯云代金券