b = set([j-i for j in set([1,2,3,4,5]) for i in set() if j-i>=0])
print b
输出:
set()
为什么此表达式返回空集而不是返回set([1,2,3,4,5])
或引发错误?
for i in set()
迭代零次,导致空集。
因为您正在迭代零个项目。 展开循环会更清晰:
result = set()
for j in set([1,2,3,4,5]):
for i in set(): # <-- there are no i's !
if j - i >= 0:
result.add(j - i)
永远无法访问要add
result
集的代码路径。