A Python megmagyarázott listái: Len, Pop, Index és List megértése

A Python listái hasonlóak a JavaScript tömbjeihez. Ezek a Python egyik beépített adattípusa, amelyet adatgyűjtések tárolására használnak.

Alapvető használat

Hogyan készítsünk listát

Egy üreset listszögletes zárójelek segítségével hozunk létre:

>>> empty_list = [] >>> type(empty_list)  >>> len(empty_list) 0

A listelemeket úgy lehet létrehozni, hogy vesszővel elválasztott elemek listáját szögletes zárójelek közé csatoljuk. A listák lehetővé teszik, hogy az elemek különböző típusúak legyenek (heterogének), de leggyakrabban egyetlen típusúak (homogének):

>>> homogeneous_list = [1, 1, 2, 3, 5, 8] >>> type(homogeneous_list)  >>> print(homogeneous_list) [1, 1, 2, 3, 5, 8] >>> len(homogeneous_list) 6 >>> heterogeneous_list = [1, "Hello Campers!"] >>> print(heterogeneous_list) [1, "Hello Campers!"] >>> len(heterogeneous_list) 2

A listkonstruktor felhasználható a következők létrehozására is list:

>>> empty_list = list() # Creates an empty list >>> print(empty_list) [] >>> list_from_iterable = list("Hello campers!") # Creates a list from an iterable. >>> print(list_from_iterable) ['H', 'e', 'l', 'l', 'o', ' ', 'c', 'a', 'm', 'p', 'e', 'r', 's', '!']

Listák megértésével is használhat listákat, amelyeket később a cikkben ismertetünk.

Hozzáférési elemek egy listán

>>> my_list = [1, 2, 9, 16, 25] >>> print(my_list) [1, 2, 9, 16, 25]

Nulla indexelt

>>> my_list[0] 1 >>> my_list[1] 2 >>> my_list[2] 9

Tekerje körbe az indexelést

>>> my_list[-1] 25 >>> my_list[-2] 16

Kicsomagolási listák a python-3 számára

>>> print(*my_list) 1 2 9 16 25

A listák változtathatóak

listsváltozékony konténerek. A változtatható tárolók olyan tárolók, amelyek lehetővé teszik a tároló által tárolt objektumok megváltoztatását.

Az a-ból származó elemeket ki listlehet vonni és át lehet rendezni egy másik listindexként.

>>> my_list = [1, 2, 9, 16, 25, 34, 53, 21] >>> my_index = [5, 2, 0] >>> my_new_list = [my_list[i] for i in my_index] >>> print(my_new_list) [34, 9, 1]

Sorolja fel a módszereket

len()

A len()metódus visszaadja egy objektum hosszát, legyen szó listáról, karakterláncról, dupláról vagy szótárról.

len() egy argumentumot vesz fel, amely lehet szekvencia (például karakterlánc, bájt, duplán, lista vagy tartomány) vagy gyűjtemény (például szótár, halmaz vagy rögzített halmaz).

list1 = [123, 'xyz', 'zara'] # list print(len(list1)) # prints 3 as there are 3 elements in the list1 str1 = 'basketball' # string print(len(str1)) # prints 10 as the str1 is made of 10 characters tuple1 = (2, 3, 4, 5) # tuple print(len(tuple1)) # prints 4 as there are 4 elements in the tuple1 dict1 = {'name': 'John', 'age': 4, 'score': 45} # dictionary print(len(dict1)) # prints 3 as there are 3 key and value pairs in the dict1

index()

index() a függvény argumentumaként megadott listában az elem első előfordulását / indexét adja vissza.

numbers = [1, 2, 2, 3, 9, 5, 6, 10] words = ["I", "love", "Python", "I", "love"] print(numbers.index(9)) # 4 print(numbers.index(2)) # 1 print(words.index("I")) # 0 print(words.index("am")) # returns a ValueError as 'am' is not in the `words` list

Itt az első kimenet nagyon nyilvánvaló, de a második és a harmadik eleinte zavarónak tűnhet. De ne feledjük, index()visszatér az első előfordulása az elem, ezért ebben az esetben 1, és 0a mutatók, ahol 2és "I"történik először a listákon volt.

Továbbá, ha egy elem nem található a listában, akkor ValueErroraz a visszatér, mint "am"a wordslistában történő indexelés esetén .

Opcionális érvek

Opcionális argumentumokkal is korlátozhatja a keresést a lista egy bizonyos részsorozatára:

words = ["I", "am", "a", "I", "am", "Pythonista"] print(words.index("am", 2, 5)) # 4

Bár az elemet a 2. (befogadó) és az 5. (nem befogadó) index között keresik, a visszaküldött indexet a teljes lista elejéhez viszonyítják, nem pedig a kezdő argumentumhoz.

pop()

A pop()módszer eltávolítja és visszaadja az utolsó elemet a listáról.

Van egy opcionális paraméter, amely a listáról eltávolítandó elem indexe. Ha nincs megadva index, akkor pop()eltávolítja és visszaadja a lista utolsó elemét.

Ha a pop()metódusnak átadott index nincs a tartományban, akkor IndexError: pop index out of rangekivételt dob .

cities = ['New York', 'Dallas', 'San Antonio', 'Houston', 'San Francisco']; print "City popped is: ", cities.pop() # City popped is: San Francisco print "City at index 2 is : ", cities.pop(2) # City at index 2 is: San Antonio

Alap verem funkcionalitás

A pop()módszert gyakran együtt használják az append()alapvető veremfunkciók Python alkalmazásban történő megvalósításához:

stack = [] for i in range(5): stack.append(i) while len(stack): print(stack.pop())

Lista megértése

A listamegértés a lista végigvezetésének egyik módja, hogy bizonyos feltételek alapján új listát állítson elő. Először zavaró lehet, de ha egyszer hozzáért a szintaxishoz, nagyon hatékony és gyors.

Az első lépés a listamegértés használatának elsajátításában az, hogy megvizsgáljuk a lista végigvezetésének hagyományos módját. Az alábbiakban bemutatunk egy egyszerű példát, amely új páros számok listáját adja vissza.

# Example list for demonstration some_list = [1, 2, 5, 7, 8, 10] # Empty list that will be populate with a loop even_list = [] for number in some_list: if number % 2 == 0: even_list.append(number) # even_list now equals [2, 8, 10]

Először létrehoz egy listát néhány számmal. Ezután létrehoz egy üres listát, amely megtartja az eredményeket a ciklusból. A ciklusban ellenőrizze, hogy minden szám osztható-e 2-vel, és ha igen, akkor hozzáadja a even_list. Ehhez 5 kódsor kellett, a megjegyzések és a szóköz nélkül, ami nem sok ebben a példában.

Most pedig a lista megértésének példája.

# Example list for demonstration some_list = [1, 2, 5, 7, 8, 10] # List Comprehension even_list = [number for number in some_list if number % 2 == 0] # even_list now equals [2, 8, 10]

Egy másik példa, ugyanazzal a két lépéssel: Az alábbiakban létrehozza a számok listáját, amelyek megfelelnek a számoknak, my_starting_listszorozva 7-vel.

my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8] my_new_list = [] for item in my_starting_list: my_new_list.append(item * 7)

A kód futtatásakor a végső értéke my_new_list:[7, 14, 21, 28, 35, 42, 49, 56]

A developer using list comprehension could achieve the same result using the following list comprehension, which results in the same my_new_list.

my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8] my_new_list = [item * 7 for item in my_starting_list]

A simple formula to write in a list comprehension way is:

my_list = [{operation with input n} for n in {python iterable}]

Replace {operation with input n} with however you want to change the item returned from the iterable. The above example uses n * 7 but the operation can be as simple or as complex as necessary.

Replace {python iterable} with any iterable. Sequence types will be most common. A list was used in the above example, but tuples and ranges are also common.

List comprehension adds an element from an existing list to a new list if some condition is met. It is neater, but is also much faster in most cases. In some cases, list comprehension may hinder readability, so the developer must weigh their options when choosing to use list comprehension.

Examples of list comprehension with conditionals

The flow of control in list comprehensions can be controlled using conditionals. For example:

only_even_list = [i for i in range(13) if i%2==0]

This is equivalent to the following loop:

only_even_list = list() for i in range(13): if i%2 == 0: only_even_list.append(i)

List comprehension can also contain nested if conditions. Consider the following loop:

divisible = list() for i in range(50): if i%2 == 0: if i%3 == 0: divisible.append(i)

Using list comprehension this can be written as:

divisible = [i for i in range(50) if i%2==0 if i%3==0]

If-Else statement can also be used along with list comprehension.

list_1 = [i if i%2==0 else i*-1 for i in range(10)]

More Information:

  • The Best Python Code Examples