下一个循环为count
参数返回值for line in textfile.text.splitlines():
count += 1 if 'hostname' in line else 0
:
1
然而,尝试使用列表推导来做同样的事情会返回count += 1 if ['hostname' in line for line in textfile.text.splitlines()] else 0
:
-(void)backupDownload{
_tmpFilePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"filename"];
[[self restClient] loadFile:@"/filename" intoPath:_tmpFilePath];
}
我哪里出错了?
答案 0 :(得分:2)
列表推导是列表创建的捷径。以下是(大致)等价的:
result = []
for item in l:
if condition(item):
result.append(item.attribute)
result = [item.attribute for item in l if condition(item)]
所以你的代码
count += 1 if ['hostname' in line for line in textfile.text.splitlines()] else 0
与
相同result = []
for line in textfile.text.splitlines():
result.append('hostname' in line)
count += 1 if result else 0
显然与
不一样for line in textfile.text.splitlines():
count += 1 if 'hostname' in line else 0
相反,你可以做像
这样的事情count += sum([1 for line in textfile.text.splitlines() if 'hostname' in line])
答案 1 :(得分:1)
试试这个 -
count += len([line for line in textfile.text.splitlines() if 'hostname' in line])
答案 2 :(得分:0)
这是因为在第二种情况下,你的if条件只执行一次。
如果listobject为0,则第二个语句转换为count + = 1;
此处列表对象不是None,因此count + = 1执行一次。