三元迭代可能吗?我的意思一个简单的版本,但这个特殊的例子可以以更好的方式来完成:python与列表理解三元迭代
c = 0
list1 = [4, 6, 7, 3, 4, 5, 3, 4]
c += 1 if 4 == i for i in list1 else 0
一个更实际的例子:
strList = ['Ulis', 'Tolus', 'Utah', 'Ralf', 'Chair']
counter = 0
counter += 1 if True == i.startswith('U') for i in strList else 0
return counter
这有点低俗,但'sum()'会接受一个'bool'值,将'False'转换为'0'和'True'转换为'1'。因此,这个代码也可以工作:'sum(el.startswith('U')for el in strList)' – steveha
@steveha确实可以工作,但我更喜欢显式的:) –
@steveha:python'bool'是一个子类'int'(出于历史原因);它不是“总和”转换它,而是简单的整数算术; '0 + True == 1'。 –