Jak utworzyć listę zawierającą wartości między dwiema wartościami, które wstawiłem? Na przykład generowana jest następująca lista dla wartości od 11 do 16:
list = [11, 12, 13, 14, 15, 16]
Zastosowanie range
. W Python 2.x zwraca listę, więc wszystko czego potrzebujesz to:
>>> range(11, 17)
[11, 12, 13, 14, 15, 16]
W Pythonie 3.x range
jest iteratorem. Musisz przekonwertować go na listę:
>>> list(range(11, 17))
[11, 12, 13, 14, 15, 16]
Uwaga : Drugi numer jest wyłączny. Więc tutaj musi być 16+1
=17
EDYTOWAĆ:
Aby odpowiedzieć na pytanie o zwiększenie o 0.5
, najłatwiejszą opcją byłoby prawdopodobnie użycie numpy arange()
i .tolist()
:
>>> import numpy as np
>>> np.arange(11, 17, 0.5).tolist()
[11.0, 11.5, 12.0, 12.5, 13.0, 13.5,
14.0, 14.5, 15.0, 15.5, 16.0, 16.5]
step
parametru, ale wciąż jest to int - not float. Nie możesz tego zrobić dokładnie w standardowej bibliotece lib.Wygląda na to, że szukasz
range()
:Aby zwiększyć o,
0.5
zamiast1
, powiedz:źródło
list
jako zmiennej.list
jest wbudowana klasa, więc korzystanie z niej jako zmiennej jest nieco odradzanePróbować:
To jest lista w Pythonie 2.x i zachowuje się jak lista w Pythonie 3.x. Jeśli używasz Python 3 i potrzebujesz listy, którą możesz zmodyfikować, użyj:
źródło
Jeśli szukasz funkcji podobnej do zakresu, która działa dla typu float, to jest to bardzo dobry artykuł .
Wynik:
źródło
Używaj rozumienia listy w Pythonie. Ponieważ chcesz też 16 na liście .. Użyj x2 + 1. Funkcja zakresu wyklucza górną granicę funkcji.
źródło
range()
nie potrzebujesz, użyj rozumienia listylist(range(x1, x2+1))
.zakładając, że chcesz mieć zakres od x do y
użyj listy do obsługi 3.x.
źródło
W Pythonie możesz to zrobić bardzo łatwo
lub możesz utworzyć funkcję rekurencyjną, która zwraca tablicę do podanej liczby:
wynik: ar = [10,9,8,7,6,5,4,3,2,1,0]
źródło
Najbardziej eleganckim sposobem na to jest użycie tej
range
funkcji, jednak jeśli chcesz odtworzyć tę logikę, możesz zrobić coś takiego:To daje wynik:
Wyrażone wcześniej przez @Jared, najlepszym sposobem jest użycie
range
lubnumpy.arrange
jednak znajdę interesującą kod do podziału.źródło
[x for x in range(10, 3, 1)]
samej - pierwszy argument to początek, drugi koniec i ostatni krok. ==> stop> startKażda powyższa odpowiedź zakłada, że zakres ma wyłącznie liczby dodatnie. Oto rozwiązanie, aby zwrócić listę kolejnych liczb, w których argumentami mogą być dowolne (dodatnie lub ujemne), z możliwością ustawienia opcjonalnej wartości kroku (domyślnie = 1).
Na przykład standardowe polecenie
list(range(1,-3))
zwraca pustą listę[]
, a funkcja ta powróci[-3,-2,-1,0,1]
Zaktualizowano : teraz krok może być ujemny. Dzięki @Michael za komentarz.
źródło
i_min = -3, i_max = 1
any_number_range(i_max, i_min))
zwraca,[-3,-2,-1,0,1]
ale wbudowanelist(range(i_min, i_max + 1))
zwróci te same wartości.list(range(1,-3, -1))