Zasadniczo chcę mieć odpowiednik tego w Pythonie w C:
int a[x];
ale w Pythonie deklaruję tablicę taką jak:
a = []
a problem polega na tym, że chcę przypisać losowe gniazda z wartościami takimi jak:
a[4] = 1
ale nie mogę tego zrobić w Pythonie, ponieważ tablica jest pusta.
python
arrays
dynamic-arrays
user299648
źródło
źródło
a = [obj] * N
jest to, że ten sam obiekt pojawia się w każdym elemencie tablicy. Jeśli jest to zmienny obiekt i zmodyfikujesz jeden element, wszystkie zostaną zmienione. ... Ale w tym przykładzie przy użyciu liczb całkowitych (lub dowolnego innego niezmiennego typu) nie ma to znaczenia. Lub, jeśli po prostu przypisujesz elementy do elementów, nie stanowi to również problemu. (Wspominam o tym, bo robiłem to zbyt często :))Nie możesz robić dokładnie tego, co chcesz w Pythonie (jeśli dobrze cię przeczytałem). Musisz podać wartości dla każdego elementu listy (lub, jak to nazwałeś, tablicy).
Ale spróbuj tego:
W przypadku list innych typów, użycie czegoś innego niż 0
None
jest również dobrym wyborem.źródło
range(N)
utworzy już listę, jeśli Python <3.0.xrange(N)
w Pythonie 2.x. Nie jestem jednak pewien, jak to graniczy z błędem. Wolę to,a = range(N)
ponieważ każdy element zaczyna się od rozsądnego „domyślnego”. Myślę, że to kwestia opinii.Możesz użyć numpy:
Przykład z pustej tablicy :
źródło
Po prostu zadeklaruj listę i dołącz każdy element. Na przykład:
źródło
możesz również rozszerzyć to za pomocą rozszerzonej metody listy.
źródło
Jeśli Ty (lub inni poszukiwacze tego pytania) byliście faktycznie zainteresowani utworzeniem ciągłej tablicy do wypełnienia liczbami całkowitymi, rozważ bytearray i memoryivew :
źródło
źródło
Jeśli faktycznie chcesz mieć tablicę w stylu C.
Zauważ, że w Pythonie nie ma koncepcji niezainicjowanej zmiennej. Zmienna to nazwa powiązana z wartością, więc ta wartość musi coś mieć. W powyższym przykładzie tablica jest inicjowana zerami.
Jednak jest to rzadkie w Pythonie, chyba że faktycznie potrzebujesz tego do rzeczy niskiego poziomu. W większości przypadków lepiej jest użyć pustej listy lub pustej tablicy numpy, jak sugerują inne odpowiedzi.
źródło