Објашњене Питхон листе: Разумевање Лен, Поп, Индек и Лист

Листе у Питхону сличне су низима у ЈаваСцрипт-у. Они су један од уграђених типова података у Питхону који се користе за чување колекција података.

Основна употреба

Како направити листу

Празна listсе креира помоћу пар угластих заграда:

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

А listсе може креирати са елементима затварањем зарезом одвојене листе елемената у углатим заградама. Листе омогућавају да елементи буду различитих врста (хетерогени), али најчешће су једног типа (хомогени):

>>> 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

listКонструктор може да се користи за креирање 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', '!']

Такође можете да користите Разумевање листе да бисте креирали листе, које ћемо покрити касније у чланку.

Приступ елементима на листи

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

Нула индексирана

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

Умотајте око индексирања

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

Распакивање листа за питхон-3

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

Листе су променљиве

listsсу променљиви контејнери. Променљиви контејнери су контејнери који омогућавају промене у објектима садржане у контејнеру.

Елементи из а listмогу се издвојити и преуредити користећи други listкао индекс.

>>> 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]

Методе пописа

len()

len()Метод враћа дужину објекта, без обзира да ли је то списак, стринг, торка, или речник.

len() узима један аргумент, који може бити низ (као што је низ, бајтови, тупле, листа или опсег) или колекција (као што је речник, скуп или замрзнути скуп).

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() враћа прво појављивање / индекс елемента на листи датом као аргумент функцији.

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

Овдје је први резултат врло очигледан, али други и трећи у почетку могу изгледати збуњујуће. Али Ремембер index()враћа прво појављивање елемента, а самим тим и у овом случају 1и 0индекси су где 2и који "I"се први појављују на листама.

Такође, ако елемент није пронађен на листи, ValueErrorвраћа се а као у случају индексирања "am"на wordsлисти.

Факултативни аргументи

Такође можете да користите необавезне аргументе да ограничите претрагу на одређену подсеквенцу листе:

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

Иако се елемент претражује између индекса 2 (укључујући) и 5 ​​(не укључујући), враћени индекс израчунава се у односу на почетак целе листе, а не као аргумент почетка.

pop()

Тхе pop()метод уклања и враћа последњи елемент са листе.

Постоји опциони параметар који је индекс елемента који се уклања са листе. Ако није наведен индекс, pop()уклања и враћа последњу ставку са листе.

Ако индекс прослеђен pop()методи није у опсегу, он IndexError: pop index out of rangeизузима изузетак.

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

Основна функционалност стека

pop()Метода се често користи у комбинацији са append()имплементирати основну стацк функционалност у апликацији Питхон:

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

Разумевање листе

Разумевање листе је начин прелиставања листе ради стварања нове листе на основу неких услова. У почетку може бити збуњујуће, али када се прилагодите синтакси, врло је моћан и брз.

The first step in learning how to use list comprehension is to look at the traditional way of looping through a list. The following is a simple example that returns a new list of even numbers.

# 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]

First a list is created with some numbers. You then create an empty list that will hold your results from the loop. In the loop you check to see if each number is divisible by 2 and if so you add it the the even_list. This took 5 lines of code not including comments and white space which isn’t much in this example.

Now for the list comprehension example.

# 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]

Another example, with the same two steps: The following will create a list of numbers that correspond to the numbers in my_starting_list multiplied by 7.

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)

When this code is run, the final value of my_new_list is: [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.

Разумевање листе додаје елемент са постојеће на нову листу ако је испуњен неки услов. Уреднији је, али је у већини случајева и много бржи. У неким случајевима разумевање листе може ометати читљивост, па програмер мора да одмери своје могућности приликом одабира да користи разумевање листе.

Примери разумевања листе са условним словима

Ток контроле у ​​разумевањима листа може се контролисати помоћу условних карактеристика. На пример:

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

Ово је еквивалентно следећој петљи:

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

Разумевање листе такође може садржати угнеждене услове. Размотрите следећу петљу:

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

Користећи разумевање листе ово се може написати као:

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

Изјава Иф-Елсе такође се може користити заједно са разумевањем листе.

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

Више информација:

  • Најбољи примери Питхон кода