yunsongblue 2021-07-30 15:23 采纳率: 100%
浏览 32
已结题

关于列表生成式 中 if 跳过操作 应该如何写?

看了廖雪峰大拿的Python教程,在列表生成式章,产生了一个疑问

想将如下列表 L1 = ['Hello', 'World', 18, 'Apple', None]
通过大写转小写,非字符串去掉 原则 转换为 L2 == ['hello', 'world', 'apple']
正常的写法应该是:L2 = [s.lower() for s in L1 if isinstance(s,str) ]

但是若想通过 for前放置if else 方式应该怎么写?

L2 = [s.lower() if isinstance(s, str) else XXXXX for s in L1]
换句话说 列表生成式 if else 不返回值应该怎么写呢?

  • 写回答

1条回答 默认 最新

  • 八云黧 2021-07-30 15:26
    关注

    1.正常写法是L2 = [s.lower() for s in L1 if isinstance(s,str)]
    2. if else 语法等价于其他语言中的三目运算符(条件预算符),本来就是按条件返回值的,你怎么让else不返回值
    如果想要这么写就必须额外处理空元素

    L2 = [s.lower() if isinstance(s,str) else None for s in L1 ]
    L2= [s for s in L2 if s ]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 修改了问题 7月30日
  • 修改了问题 7月30日
  • 展开全部

悬赏问题

  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计