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])
或引发错误?
答案 0 :(得分:1)
for i in set()
被迭代零次,导致空集。
答案 1 :(得分:1)
因为您正在迭代零项。展开循环使其更清晰:
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
集的代码路径。