2012-12-07 12 views
6

Powiel możliwe:
Initialize list with same bool valueInicjowanie dużą listę logicznych w Pythonie

ja próbuje zrobić doskonałą generator liczb w Pythonie 2.7 i planujemy używać tablicy (lub lista) booleans, które wskażą, czy dana liczba jest pierwsza.

Powiedzmy chciałam zainicjować listę 5000 logicznych, jak byłoby to zrobić bez konieczności ręcznego wpisywania [ „true”, „true” "] itd

Dzięki

+1

Zobacz ten post - http://stackoverflow.com/a/13382804/1679863 –

+1

Od kiedy to ' "true"' a logiczna ? –

+0

Dla takiej dużej listy, prawdopodobnie warto użyć tablicy Numpy - 'np.repeat ([prawda], 5000)' używa o trzy rzędy wielkości mniej pamięci niż '[prawda] * 5000'. – lvc

Odpowiedz

12

Można spróbować to:

[True] * 5000 

Listy można mnożyć w Pythonie (jako ciągi cAN):

>>> [True] * 3 
[True, True, True] 
>>> "abc" * 3 
'abcabcabc' 
+2

Tak samo na marginesie: Działa to dobrze w przypadku list typów pierwotnych, takich jak liczby i wartości logiczne, ale nie dla listy obiektów (lub listy list, list lub dykt, itp.), tak jak w tym przypadku lista będzie zawierała 5000 razy to samo wystąpienie. –

+1

Dzięki, to czego szukałem – Caw

+0

dziękuję, że przychodzi poręcznie –

0

Próbuję utworzyć generator liczb pierwszych w Pythonie 2.7 i planuję użyć tablicy (lub listy) booleans, która wskaże, czy dana liczba jest liczbą pierwszą.

Brzmi to naprawdę marnotrawnie. Lepszym rozwiązaniem byłoby mieć set() tylko z numerami trzeba:

>>> primes = {2, 3, 5, 7} 
>>> 4 in primes 
False 
>>> 5 in primes 
True 
+3

Więc sugerujesz mu ręcznie wpisać {2, 3, 5, 7 ...} zamiast [Prawda, prawda, prawda ...]. Interesujące podejście. – kaspersky

+1

Ponieważ nie było mowy, muszę powiedzieć, że serdecznie się zgadzam! Odległość między 2 liczbami pierwszymi staje się coraz większa, więc im większy idziesz, tym bardziej marnujesz "fałszywe" elementy, które masz. – erikbwork

+0

+1 To byłoby oczywiście lepsze podejście. –