[英]How to do one liner “if” and “for-loop” together in python
因此,我一直希望代码更干净,而且我陷入了一些可能很容易做到的事情。
基本上我目前所做的是:
for raw_product in r.json().get('data'):
if raw_product.get('countdown') is False:
print(raw_product.get('url'))
而且我一直在尝试找出如何将它制成一根衬纸。 到目前为止,我只是来
test = ['{}'.format(raw_product.get('url')) for raw_product in r.json().get('data')]
但是在一个内衬中,缺少if语句,我想知道是否有可能['{}'.format(raw_product.get('url')) for raw_product in r.json().get('data')]
的['{}'.format(raw_product.get('url')) for raw_product in r.json().get('data')]
内应用if语句['{}'.format(raw_product.get('url')) for raw_product in r.json().get('data')]
吗?
试试这个生成器:
gen = (repr(x.get('url')) for x in r.json().get('data') if not x.get('countdown'))
或列出:
li = [repr(x.get('url')) for x in r.json().get('data') if not x.get('countdown')]
使此代码不干净的原因不是理解,而是此“获取”方法。 比较一下:
li = [x.url for x in r.json_data if not x.countdown]
。 比较清晰。
我不确定它是否更干净,但是您可以使用带有if
过滤器的生成器表达式来在一行中获取这种模式:
[ print(rp.get('url')) for rp in r.json().get('data') if rp.get('countdown') is False ]
请注意,这样做效率低下,无法创建和记住整个None
值列表(每个print
调用的结果)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.