Ich frage mich, ob es möglich ist, die Länge des Bereichs in einem Listenverständnis in Python 3 zu erhalten, um eine bedingte als solche einzurichten? dieser Code funktioniert nichtGet Länge des Bereichs in Python List Comprehension
b = [x**2 for x in range(10) if x % 2 == 0 and x > len/2]
Wenn Sie die Länge Zustand in einem 'setzen sind if' dass kommt nach dem' for' (was bedeutet, dass, wenn die Bedingung nicht erfüllt ist, das Element wird übersprungen), Sie sollten wahrscheinlich die 'Reichweite' kurzschließen. Wenn Sie 'range (5)' (und die Längenprüfung weggelassen haben), erhalten Sie genau die gewünschten Ergebnisse. In der Tat könnten Sie 'range (0, 5, 2)' machen und den 'x% 2 == 0' Teil des Checks überspringen. – Blckknght
Ist der echte Test, um festzustellen, ob 'x' größer als die halbe Länge ist, oder wollen Sie nur die zweite Hälfte des' Bereichs'? Das heißt, was willst du für 'range (10, 20)'; jeder Wert ist größer als die Hälfte der Länge, also willst du alle behalten ('x> len (theange)/2') oder willst du die zweite Hälfte behalten? – ShadowRanger
@Blckknght: Einverstanden (obwohl der äquivalente Code auf 'range (6, 10, 2)', nicht 'range (5)' oder 'range (0, 5, 2)' basieren würde. Dies könnte beliebig automatisiert werden 'range' caps indem eine cap von 'n' genommen wird und der start mit' n // 2 + 1 & ~ 1' berechnet wird (Runden auf even, aufgerundet falls nötig) – ShadowRanger