Robię jednego z projektów Pythona zaczynającego w tym subreddit: http://www.reddit.com/r/ BeginnerProjects i do części jednego z zadań muszę usunąć wszystkie liczby całkowite z tej listy, które mają mniej niż dwie cyfry. Nie jestem pewien, gdzie idę źle. Wiem, że mogę zmienić zasięg na liście, ale chcę wykorzystać jak najwięcej umiejętności.
numbers = [x for x in range(1,1001)]
def two_or_more_digits():
for num in numbers:
if len(str(num)) < 2:
numbers.remove(num)
print (numbers)
Pracuję w Pythonie 3.
Dziękuję Ci.
2 odpowiedzi
Zamiast konwertować cyfrę do ciągów i obliczanie jego długości można również użyć prostego podziału:
[i for i in range(1,1001) if i // 10 > 0]
Spowoduje to zwrócenie listy z INTS od 10 do 1000 (włącznie).
Zmieniasz tablicę numbers
, aresztuje nad nim ... może być rację?
Jeśli chcesz rozwijać swoje umiejętności, prawdopodobnie chcesz wyrazić warunek jako predykat i użyj go w filter
lub w rozumieniu listy:
filtered = filter( lambda x: len(str(num)) < 2, numbers )
filtered2 = [x for x in numbers if len(str(x)) < 2]
(lub nawet lepiej: zamiast tego użyj itertools.ifilter
)
Podobne pytania
Powiązane pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.