python - 如果两个 for 循环之间的条件作为列表理解
问题描述
我正在尝试将以下代码编写为列表理解
l=[]
for x in range(1,10):
if x<5:
for j in range(1,3):
l.append(1)
else:
l.append(x**2)
print(l)
结果是
[1, 1, 1, 1, 1, 1, 1, 1, 25, 36, 49, 64, 81]
我努力了
l=[]
l=[(1 for j in range(1,3)) if x<5 else x**2 for x in range(1,10)]
print(l)
但我没有得到正确的结果。有任何想法吗?
解决方案
由于您对不同的列表范围有不同的规则,您可以这样做:
[1 for j in range(1,3) for x in range(1,5)] + [x**2 for x in range(5,10)]
注意:永远不要忽略代码的可读性。
推荐阅读
- ios - 为什么我没有从 Amadeus Airport and City Search API (iOS) 取回数据?
- c++ - void 参数上模板特化的 C++ 类型推导失败
- .htaccess - 为什么我的 htaccess 代码强制 http 不起作用?
- javascript - 是否可以覆盖 Filestack popin 标题?
- sql-server - 使用 Entity Framework 获取记录计数会导致大量读取
- r - igraph:如何将图转换为二分图?
- flutter - Flutter:futurebuilder => item => dialog,按子项删除后刷新视图
- html - 静态通知横幅
- audio - ffmpeg - 在特定时间将多个音频文件与单个视频文件合并
- authentication - 如何自定义 Laravel 登录系统?