mam to:Więcej pythonic alternatywą dla coraz wartość w przedziale nie używając min i max
a = min(max(x, 1), 100)
Czy jest coś bardziej pythonic?
mam to:Więcej pythonic alternatywą dla coraz wartość w przedziale nie używając min i max
a = min(max(x, 1), 100)
Czy jest coś bardziej pythonic?
Jeśli jest to tablica, można użyć numpy.clip
.
W przeciwnym razie, myślę, że twoje rozwiązanie jest najlepsze. Możesz też zdefiniować własną funkcję, która działa tak samo dla pojedynczego elementu, jeśli robisz to w wielu miejscach.
'np.clip ([500], 10,100)' +1 Podoba mi się to rozwiązanie :) –
Co o:
a = 1 if x < 1 else 10 if x > 10 else x
Daje czytelność że chciałeś bez redundancji wersji w swoim komentarzu. Jest to gadatliwe, ponieważ najpierw definiuje sprawę centralną, a następnie musi rozróżniać oba końce. Ten sposób robienia tego powoduje przecięcie końców pierwszego, a wszystko, co pozostało, znajduje się w zasięgu.
Nie odrzucę, ale nie zgodzę się z tym, że zagnieżdżone trzytonki są czytelne. –
Moje pytanie zostało zredagowane i dodano tę samą linię, ponieważ napisałem ją w komentarzach. Niemniej +1, bo to jedyny alt, jaki mam. – Schultz9999
a = x if x in range(1,100) else 1 if x < 1 else 100
Czy naprawdę potrzebujesz podłogi o 1 i cewie o 100?
To zajmuje dużo miejsca, a 'x w zakresie (1, 100)' nie jest lepsze niż '1
, ale jest naprawdę pythonic, czyta się w języku angielskim, jest równe X, jeśli X w zakresie 1 to 100 – Saloparenator
Nadal złe podejście IMO. Nie działa dla 1000000000 na moim komputerze. I '1
Innym rozwiązaniem, które można rozważyć więcej pythonic:
if x > 100:
x = 100
elif x < 1:
x = 1
technicznie, pytanie prosi o przypisanie tej wartości do "a" - tak to prawie, ale nie całkiem to spełnia. – gabe
Masz rację, jeśli przypisanie do 'a' jest konieczne, najpierw użyj' a = x', a następnie użyj mojego kodu z 'a' zamiast' x' –
Co o coś innego:
a = (1, x, 100)[-(x<1)+1+(x>100)]
lub jeśli zdefiniować swoje granice jako
lo, hi = (1, 100)
a = (lo, x, hi)[-(x<lo)+1+(x>hi)]
Lub zmienić Twoje dane i wygląda bardziej elegancko:
a = (x,lo,hi)[(x<lo)-(x>hi)]
Jest to możliwe w python, ponieważ booleans zachowuje się jak wartości 0 i 1, dzięki czemu matematyka wewnątrz []
uzyskać odpowiedni indeks krotki.
To jest piękna sztuczka :) Nie można powiedzieć, patoniczne, ale mimo to bardzo twórcze . – Schultz9999
To jest dość pythonic – sshashank124
Jak to nie satysfakcjonuje? Naprawdę nie możesz mieć nadziei na jeszcze bardziej kompaktowy –
@DSM tak ... napraw :) – Schultz9999