@Kneddel: Du übergibst als Argument einen Generator der für jede Unterliste einen Generatorerzeugt. Und diese Generatorobjekte sind alle ”wahr”, also kann da nur `True` bei heraus kommen:
Code: Alles auswählen
In [1]: nestet_list = [[1, 2, 3], [4, 5, 6]]
In [2]: value = 42
In [3]: any((x == value for x in b) for b in nestet_list)
Out[3]: True
In [4]: [(x == value for x in b) for b in nestet_list]
Out[4]:
[<generator object <genexpr> at 0x94f3f7c>,
<generator object <genexpr> at 0x94f37ac>]
In [5]: [(x == value for x in b) for b in nestet_list][0]
Out[5]: <generator object <genexpr> at 0x94f33ec>
In [6]: bool([(x == value for x in b) for b in nestet_list][0])
Out[6]: True
Du musst die inneren Generatorobjekte zu einem Wahrheitswert auswerten. Mit `any()`:
Code: Alles auswählen
In [7]: any(any(x == value for x in b) for b in nestet_list)
Out[7]: False
In [8]: any(any(x == 5 for x in b) for b in nestet_list)
Out[8]: True
Oder Du machst das ein bisschen einfacher mit ``in``:
Code: Alles auswählen
In [9]: any(value in b for b in nestet_list)
Out[9]: False
In [10]: any(5 in b for b in nestet_list)
Out[10]: True