小白python进击第二周3.列表生成式问题
来源:互联网 发布:java 停止线程 编辑:程序博客网 时间:2024/04/30 13:23
今天学习中遇到一个问题:如果list中既包含字符串,又包含整数,由于非字符串类型没有
lower()
方法,所以列表生成式会报错,改进的后的如下图:但是输出中没有包括整数。
所以我就改进了程序如下图:
版本1
版本2
版本3
可以轻易看出后面两个版本是错的,为什么?
经过多方查询:
列表生成器
comprehension ::= expression comp_forcomp_for ::= "for" target_list "in" or_test [comp_iter]comp_iter ::= comp_for | comp_ifcomp_if ::= "if" expression_nocond [comp_iter]
条件表达式
conditional_expression ::= or_test ["if" or_test "else" expression]expression ::= conditional_expression | lambda_exprexpression_nocond ::= or_test | lambda_expr_nocond
可以看出条件表达式没有for条件表达式 / lambda表达式 + for 是列表生成器的一种形式。(Lambda 表达式 Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。)
其中s.lower() if isinstance(s,str) else s是条件表达式,这是列表生成器。
L= [s.lower() for s in L if isinstance(s,str) else s for s in L]
其中s.lower() for s in L if isinstance(s,str) else s
不是条件表达式,if isinstance(s,str) else s for s in L
也不是条件表达式,而符合列表生成器的
comp_if ::= "if" expression_nocond [comp_iter]
。所以这也是列表生成器。 2 0
- 小白python进击第二周3.列表生成式问题
- 小白python进击第二周2.尾递归
- python 列表生成式
- Python:列表生成式
- python列表生成式
- python 列表生成式
- Python - 列表生成式
- python 列表生成式
- python列表生成式
- python列表生成式
- Python列表生成式
- python列表生成式
- Python 列表生成式
- python 列表生成式
- Python 列表生成式
- Python 列表生成式
- python列表生成式
- 进击的小白php1
- 配置高并发jdbc连接池
- 设计模式开篇(一)
- maven 手动导入包到仓库
- C#中ToString() 的一些常用用法
- LeetCode 75. Sort Colors
- 小白python进击第二周3.列表生成式问题
- crontab定时删除tomcat日志
- python pieces
- JavaSript模块规范 - AMD规范与CMD规范介绍
- 互联网保险O2O平台微服务架构设计
- week4-4
- 排序算法:冒泡、选择、二分查找
- 使用Grokmirror镜像服务(1)——镜像内核Git仓库
- Android Annotations框架学习