2249 Stimmen

Wie erhalte ich die Anzahl der Elemente in einer Liste in Python?

Wie kann ich die Anzahl der Elemente in der Liste ermitteln? items ?

items = ["apple", "orange", "banana"]

# There are 3 items.

33 Stimmen

Sie fragen offensichtlich nach der Anzahl der Elemente in der Liste. Wenn ein Suchender hierher kommt und nach der Größe des Objekts im Speicher sucht, ist dies die eigentliche Frage und die Antwort, die er sucht: Wie kann ich die Größe eines Objekts in Python bestimmen?

10voto

Shai Alon Punkte 876

Beantwortung Ihrer Frage, wie die Beispiele auch zuvor gegeben:

items = []
items.append("apple")
items.append("orange")
items.append("banana")

print items.__len__()

6voto

Bgil Midol Punkte 824

Sie können die len() Funktion, um die Länge einer Iterablen in Python zu ermitteln.

my_list = [1, 2, 3, 4, 5]
print(len(my_list))  # OUTPUT: 5

Die len() Funktion funktioniert auch mit Zeichenketten:

my_string = "hello"
print(len(my_string))  # OUTPUT: 5

Um zum Schluss zu kommen, len() funktioniert mit jeder Sequenz oder Sammlung (oder jedem Objekt, das die Größe von __len__ ).

5voto

Code Carbonate Punkte 475

Es gibt eine eingebaute Funktion namens len() in Python, die unter diesen Bedingungen hilfreich ist.

a=[1,2,3,4,5,6]
print(len(a))     #Here the len() function counts the number of items in the list.

Ausgabe:

>>> 6

Im Falle von string (siehe unten) funktioniert dies etwas anders:

a="Hello"
print(len(a)) #Here the len() function counts the alphabets or characters in the list.

Ausgabe:

>>> 5

Das liegt daran, dass die Variable (a) eine Zeichenkette und keine Liste ist. Daher wird die Anzahl der Zeichen oder Alphabete in der Zeichenkette gezählt und dann die Ausgabe gedruckt.

5voto

Tamil Selvan Punkte 1284

Es gibt drei Möglichkeiten, die Länge der Elemente in der Liste zu ermitteln. Ich werde die 3 Methoden hier mit einer Leistungsanalyse vergleichen.

Methode 1: Verwendung len()

items = []
items.append("apple")
items.append("orange")
items.append("banana")

print(len(items))

Ausgabe:

3

Methode 2: Verwendung der naiven Zählermethode

items = []
items.append("apple")
items.append("orange")
items.append("banana")

counter = 0
for i in items:
    counter = counter + 1

print(counter)

Ausgabe:

3

Methode 3: Verwendung length_hint()

items = []
items.append("apple")
items.append("orange")
items.append("banana")

from operator import length_hint
list_len_hint = length_hint(items)
print(list_len_hint)

Ausgabe:

3

Leistungsanalyse - Naiv vs. len() gegen length_hint()

Hinweis : Um zu vergleichen, ändere ich die Eingabeliste in eine große Menge, die eine gute Zeitdifferenz für den Vergleich der Methoden bietet.

items = list(range(100000000))

# Performance Analysis
from operator import length_hint
import time

# Finding length of list
# using loop
# Initializing counter

start_time_naive = time.time()
counter = 0
for i in items:
    # incrementing counter
    counter = counter + 1
end_time_naive = str(time.time() - start_time_naive)

# Finding length of list
# using len()
start_time_len = time.time()
list_len = len(items)
end_time_len = str(time.time() - start_time_len)

# Finding length of list
# using length_hint()
start_time_hint = time.time()
list_len_hint = length_hint(items)
end_time_hint = str(time.time() - start_time_hint)

# Printing Times of each
print("Time taken using naive method is : " + end_time_naive)
print("Time taken using len() is : " + end_time_len)
print("Time taken using length_hint() is : " + end_time_hint)

Ausgabe:

Time taken using naive method is : 7.536813735961914
Time taken using len() is : 0.0
Time taken using length_hint() is : 0.0

Schlussfolgerung

Es ist deutlich zu erkennen, dass der Zeitaufwand für die naive Methode im Vergleich zu den anderen beiden Methoden sehr hoch ist, daher len() & length_hint() ist die beste Wahl für die Verwendung.

4voto

Alec Punkte 7040

Im Hinblick darauf, wie len() tatsächlich funktioniert, ist dies seine C-Implementierung :

static PyObject *
builtin_len(PyObject *module, PyObject *obj)
/*[clinic end generated code: output=fa7a270d314dfb6c input=bc55598da9e9c9b5]*/
{
    Py_ssize_t res;

    res = PyObject_Size(obj);
    if (res < 0) {
        assert(PyErr_Occurred());
        return NULL;
    }
    return PyLong_FromSsize_t(res);
}

Py_ssize_t ist die maximale Länge, die das Objekt haben kann. PyObject_Size() ist eine Funktion, die die Größe eines Objekts zurückgibt. Wenn sie die Größe eines Objekts nicht bestimmen kann, gibt sie -1 zurück. In diesem Fall wird dieser Codeblock ausgeführt:

    if (res < 0) {
        assert(PyErr_Occurred());
        return NULL;
    }

Infolgedessen wird eine Ausnahme ausgelöst. Andernfalls wird dieser Codeblock ausgeführt:

    return PyLong_FromSsize_t(res);

res die eine C Ganzzahl, wird in eine Python int (das im C-Code noch "Long" genannt wird, weil Python 2 zwei Typen für die Speicherung von Ganzzahlen hatte) und zurückgegeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X