1. ProgrammingPythonКак да дефинираме и използваме Python списъци

От Алън Шович, Джон Шович

Най-простото събиране на данни в Python е списък. Списък е всеки списък с данни, разделени със запетаи, в квадратни скоби. Обикновено вие присвоявате име в списъка на Python, като използвате знак =, точно както бихте направили с променливи. Ако списъкът съдържа числа, тогава не използвайте кавички около тях. Например, ето списък с тестови оценки:

резултати = [88, 92, 78, 90, 98, 84]

Ако списъкът съдържа низове, тогава, както винаги, тези низове трябва да бъдат затворени в единични или двойни кавички, както в този пример:

За да покажете съдържанието на списък на екрана, можете да го отпечатате точно както бихте отпечатали всяка обикновена променлива. Например изпълнението на печат (ученици) във вашия код след дефиниране на този списък показва това на екрана.

['Марк', 'Кехлибар', 'Тод', 'Анита', 'Санди']

Това може да не е точно това, което сте имали предвид. Но не се притеснявайте, Python предлага много страхотни начини за достъп до данни в списъци и показването им, колкото искате.

Позоваване на елементи от списъка на Python по позиция

Всеки елемент от списъка има номер на позиция, започващ с нула, въпреки че не виждате никакви числа. Можете да се обърнете към всеки елемент от списъка по неговия номер, използвайки името за списъка, последвано от число в квадратни скоби. С други думи, използвайте този синтаксис:

listname [X]

Заменете името на списъка с името на списъка, до който имате достъп и заменете х с номера на позицията на желания от вас елемент. Не забравяйте, че първият елемент винаги е число нула, а не едно. Например, в първия ред по-долу дефинирам списък с име студенти и след това отпечатвам номер на нула от този списък. Резултатът при изпълнение на кода е, че се показва името Марк.
students = ["Марк", "Кехлибар", "Тод", "Анита", "Санди"]
печат (студенти [0])
марка

Когато четат елементи от списъка за достъп, професионалистите използват думата под номер. Например за студенти [0] ще се говори като студенти под нула.

Следващият пример показва списък с имена резултати. Функцията print () отпечатва номера на позицията на последната оценка в списъка, която е 4 (защото първата винаги е нула).

резултати = [88, 92, 78, 90, 84]
печат (резултати [4])
84

Ако се опитате да получите достъп до елемент от списъка, който не съществува, получавате грешка в „индекс извън обхвата“. Индексната част е препратка към числото в квадратните скоби. Например, изображението по-долу показва малък експеримент в тетрадка на Юпитер, където се създава списък с резултати и след това се прави опит за отпечатване на резултат [5].

Не успя и генерира грешка, тъй като няма резултати [5]. Има само резултати [0], оценки [1], оценки [2], оценки [3] и оценки [4], тъй като броенето винаги започва от нула с първото в списъка.

Диапазон на индекса на Python

Преглеждане в списък на Python

За достъп до всеки елемент от списък, просто използвайте цикъл с този синтаксис:

за х в списъка:

Заменете x с име на променлива по ваш избор. Заменете списъка с името на списъка. Лесен начин да направите кода четим е винаги да използвате множествено число за името на списъка (като студенти, резултати). След това можете да използвате името на единствено число (ученик, оценка) за името на променливата. Не е необходимо и при този подход да използвате номера на индекс (числа в квадратни скоби). Например следният код отпечатва всеки резултат в списъка с резултати:

за резултат в резултати:
печат (резултат)

Не забравяйте винаги да вписвате кода, който трябва да бъде изпълнен в цикъла. Това изображение показва по-пълен пример, където можете да видите резултата от пускането на кода в тетрадка на Юпитер.

Преглеждане в списък на Python

Виждане дали списъкът на Python съдържа елемент

Ако искате вашият код да провери съдържанието на списък, за да види дали той вече съдържа някакъв елемент, използвайте в name name в списъка if или в променлива задача.

Например, кодът на изображението по-долу създава списък с имена. След това две променливи съхраняват резултатите от търсенето в списъка за имената Анита и Боб. Отпечатването на съдържанието на всяка променлива показва True за тази, където името (Anita) е в списъка. Тестът, за да се види дали Боб е в списъка, се оказва невярен.

Виждане дали даден елемент е в списък на Python

Получаване на дължината на Python списък

За да определите колко артикула са в списък, използвайте функцията len () (къса за дължина). Поставете името на списъка в скобите. Например, въведете следния код в тетрадка на Юпитер или подкана Python или каквото и да е друго:

students = ["Марк", "Кехлибар", "Тод", "Анита", "Санди"]
печатат (МПП (студенти))

Изпълняването на този код създава този изход:

5

В списъка наистина има пет елемента, макар че последният винаги е един по-малък от числото, защото Python започва да брои нула. Така че последният, Санди, всъщност се отнася за ученици [4], а не за студенти [5].

Добавяне на елемент в края на Python списък

Когато искате вашият Python код да добави нов елемент в края на списъка, използвайте метода .append () със стойността, която искате да добавите в скобите. Можете да използвате или име на променлива или буквална стойност в кавичките.

Например в следното изображение редът, който чете students.append ("Goober") добавя името Goober в списъка. Редът, който чете students.append (new_student) добавя каквото име се съхранява в променливата с име new_student към списъка. Методът .append () винаги се добавя в края на списъка. Така че когато отпечатвате списъка, виждате тези две нови имена в края.

Списък за добавяне на Python

Можете да използвате тест, за да видите дали даден елемент е в списък и след това да го добавите само когато елементът вече не е там. Например, кодът по-долу няма да добави името Amber в списъка, защото това име вече е в списъка:

student_name = "Аманда"

# Добавете име на ученик, но само ако вече не е в списъка.
ако име на ученик:
    печат (име на ученик + „вече в списъка“)
друго:
    students.append (student_name)
    печат (име на ученик + „добавено в списъка“)

Вмъкване на елемент в списък на Python

Въпреки че методът append () ви позволява да добавите елемент в края на списъка, методът insert () ви позволява да добавите елемент към списъка на която и да е позиция. Синтаксисът за insert () е

listname.insert (позиция, елемент)

Заменете името на списъка с името на списъка, позиционирайте с позицията, в която искате да вмъкнете елемента (например 0, за да стане първият елемент, 1, за да го направите вторият и т.н.). Заменете елемент със стойността или името на променлива, която съдържа стойността, която искате да поставите в списъка.

Например следният код прави Лупе първият елемент в списъка:

# Създайте списък на низове (имена).
students = ["Марк", "Кехлибар", "Тод", "Анита", "Санди"]

student_name = "Lupe"
# Добавете име на ученика в началото на списъка.
students.insert (0, student_name)

# Покажете ми новия списък.
печатат (ученици)

Ако стартирате кода, print (students) ще покаже списъка след добавяне на новото име, както следва:

['Lupe', 'Mark', 'Amber', 'Todd', 'Anita', 'Sandy']

Промяна на елемент в списък на Python

Можете да промените елемент в списък, използвайки оператора = присвояване (вижте тези общи Python оператори), точно както правите с променливи. Просто не забравяйте да включите номера на индекса в квадратни скоби на елемента, който искате да промените. Синтаксисът е:

listname [индекс] = NEWVALUE

Заменете името на списъка с името на списъка; заменете индекса с индекса (номера на индекса) на елемента, който искате да промените; и заменете newvalue с каквото искате да поставите в списъка. Например, погледнете този код:

# Създайте списък на низове (имена).
students = ["Марк", "Кехлибар", "Тод", "Анита", "Санди"]
студенти [3] = "Хобарт"
печатат (ученици)

Когато стартирате този код, изходът е следният, тъй като името на Анита е променено на Hobart.

['Марк', 'Кехлибар', 'Тод', 'Хобарт', 'Санди']

Комбиниране на списъци на Python

Ако имате два списъка, които искате да комбинирате в един списък, използвайте функцията exte () със синтаксиса:

original_list.extend (additional_items_list)

Във вашия код заменете original_list с името на списъка, към който ще добавяте нови елементи от списъка. Заменете Additional_items_list с името на списъка, който съдържа елементите, които искате да добавите към първия списък. Ето един прост пример с използване на списъци с име list1 и list2. След като изпълните list1.extend (list2), първият списък съдържа елементите от двата списъка, както можете да видите в изхода на оператора print () в края.

# Създайте два списъка с имена.
list1 = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
list2 = ["Huey", "Dewey", "Louie", "Nader", "Bubba"]

# Добавете list2 имена към list1.
list1.extend (List2)

# Печат списък 1.
отпечатате (List1)

['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake', 'Huey', 'Dewey', 'Louie', 'Nader', 'Bubba']

Лесно Parcheesi, нали?

Премахване на елементи от списъка на Python

Python предлага метод за премахване (), така че можете да премахнете всяка стойност от списъка. Ако елементът е в списъка многократно, се премахва само първото събитие. Например, следният код показва списък с букви с буквата C, повторена няколко пъти. Тогава кодът използва буквите.remove ("C"), за да премахне буквата C от списъка:

# Премахнете „C“ от списъка.
letters.remove ( "С")

# Покажете ми новия списък.
печатат (букви)

Когато действително изпълните този код и след това отпечатате списъка, ще видите, че е премахната само първата буква С:

['A', 'B', 'D', 'C', 'E', 'C']

Ако трябва да премахнете всички елементи, можете да използвате цикъл, за да повторите .remove, докато елементът все още остава в списъка. Например, този код повтаря .remove, докато „C“ все още е в списъка.

# Създайте списък с низове.
букви = ["A", "B", "C", "D", "C", "E", "C"]

Ако искате да премахнете елемент въз основа на позицията му в списъка, използвайте pop () с индексен номер, а не премахнете () със стойност. Ако искате да премахнете последния елемент от списъка, използвайте pop () без индекс номер.

Например следният код създава списък, един ред премахва първия елемент (0), а друг премахва последния елемент (pop () без нищо в скобите). Отпечатването на списъка показва, че тези два елемента са премахнати:

# Създайте списък с низове.
букви = ["A", "B", "C", "D", "E", "F", "G"]
 
# Отстранете първия елемент.
letters.pop (0)
#Изтрийте последния елемент.
letters.pop ()
 
# Покажете ми новия списък.
печатат (букви)

Изпълнението на кода показва, че изскачащите първи и последни елементи наистина са работили:

['B', 'C', 'D', 'E', 'F']

Когато извадите () елемент от списъка, можете да съхраните копие на тази стойност в някаква променлива. Например това изображение показва същия код като по-горе. Той обаче съхранява копия на това, което е премахнато, в променливи, наречени first_removed и last_removed. В края тя отпечатва списъка на Python, а също така показва кои букви са премахнати.

премахнете елементи от списъка на Python

Python също предлага команда del (съкратено за изтриване), която изтрива всеки елемент от списък въз основа на неговия индекс номер (позиция). Но отново трябва да запомните, че първият елемент е нула. Така че, нека да кажем, че пуснете следния код, за да изтриете номер 2 от списъка:

# Създайте списък с низове.
букви = ["A", "B", "C", "D", "E", "F", "G"]
 
# Премахване на елемент 2.
дел букви [2]
 
печатат (букви)

Изпълняването на този код показва списъка отново, както следва. Буквата С е изтрита, което е правилният елемент, който трябва да изтриете, тъй като буквите са номерирани 0, 1, 2, 3 и т.н.

['A', 'B', 'D', 'E', 'F', 'G']

Можете също да използвате del, за да изтриете цял списък. Просто не използвайте квадратните скоби и индексния номер. Например кодът, който виждате по-долу, създава списък, след което го изтрива. Опитът за отпечатване на списъка след изтриването причинява грешка, тъй като списъкът вече не съществува, когато се изпълнява операторът print ().

Изчистване на списък на Python

Ако искате да изтриете съдържанието на списък, но не и самия списък, използвайте .clear (). Списъкът все още съществува; той обаче не съдържа елементи. С други думи, това е празен списък. Следващият код показва как бихте могли да тествате това. Изпълнението на кода показва [] в края, което ви позволява да знаете, че списъкът е празен:

# Създайте списък с низове.
букви = ["A", "B", "C", "D", "E", "F", "G"]
 
# Изчистване на списъка с всички записи.
letters.clear ()
 
# Покажете ми новия списък.
печатат (букви)

[]

Преброяване колко пъти един елемент се появява в списък на Python

Можете да използвате метода Python count (), за да преброите колко пъти даден елемент се появява в списък. Както при другите методи на списъка, синтаксисът е прост:

listname.count (х)

Заменете името на списъка с името на списъка си и x със стойността, която търсите (или името на променлива, която съдържа тази стойност).

Кодът на изображението по-долу отчита колко пъти буквата B се появява в списъка, използвайки буква B в скобите на .count (). Същият този код също отчита броя на степените на C, но тази стойност беше запазена в променлива, само за да покаже разликата в синтаксиса. И двата броя работеха, както можете да видите в изхода на програмата в долната част. Един беше добавен за преброяване на F, като не използва никакви променливи. F се отчитат правилно в кода, който показва съобщението. Няма F степени, така че това връща нула, както можете да видите в резултата.

Когато се опитвате да комбинирате числа и низове, за да образувате съобщение, не забравяйте, че трябва да преобразувате числата в низове, използвайки функцията str (). В противен случай получавате грешка, която чете нещо като може само да свърже str (не "int") към str. В това съобщение, int е кратко за цяло число, а str е кратко за низ.

Намиране на индекса на елемент от списъка Python

Python предлага метод .index (), който връща число, указващо позицията на базата на индекса на елемент в списък. Синтаксисът е:

listname.index (х)

Както винаги, заменете името на списъка с името на списъка, който искате да търсите. Заменете с x какво каквото търсите (както буквално или като променливо име, както винаги). Разбира се, няма гаранция, че артикулът е в списъка и дори да е такъв, няма гаранция, че артикулът е в списъка само веднъж. Ако елементът не е в списъка, възниква грешка. Ако елементът е в списъка няколко пъти, тогава индексът на първия съвпадащ елемент се връща.

Следващото изображение показва пример, при който програмата се срива на реда f_index = grade.index (look_for), защото няма F в списъка.

Лесен начин да заобиколите този проблем е да използвате оператор if, за да видите дали даден елемент е в списъка, преди да се опитате да получите неговия индекс номер. Ако елементът не е в списъка, покажете съобщение, което го казва. В противен случай вземете индексния номер и го покажете в съобщение. Този код е следният:

# Създайте списък с низове.
grade = ["C", "B", "A", "D", "C", "B", "C"]
# Решете какво да търсите
look_for = "F"
# Вижте дали елементът е в списъка.
ако look_for в степени:
    # Ако е в списъка, вземете и покажете индекса.
    печат (str (look_for) + "е в индекс" + str (grade.index (look_for)))
друго:
    # Ако не е в списъка, дори не се опитвайте за номер на индекса.
    print (str (look_for) + „не е в списъка.“)

Подреждане и сортиране на списъци на Python

Python предлага метод сортиране () за сортиране на списъци. В най-простата си форма той поставя азбучно елементите в списъка (ако те са низове). Ако списъкът съдържа числа, те се сортират от най-малките до най-големите. За прост подобен вид, просто използвайте Sort () с празни скоби:

listname.sort ()

Заменете името на списъка с името на вашия списък. Следващото изображение показва пример, използвайки списък от низове и списък с числа. В примера беше създаден нов списък за всеки от тях, просто като се присвои всеки сортиран списък на ново име на списъка. Тогава кодът отпечатва съдържанието на всеки сортиран списък.

Ако вашият списък съдържа низове със смес от малки и малки букви и ако резултатите от сорта не изглеждат правилни, опитайте да замените .sort () с .sort (key = lambda s: s.lower ()) и след това отново стартирайте кода.

Датите са малко по-сложни, защото не можете просто да ги напишете като низове, като „12/31/2020“. Те трябва да бъдат тип данни за дата, за да сортират правилно. Това означава да използвате модула datetime и метода date (), за да определите всяка дата. Можете да добавите датите в списъка, както и всеки друг списък. Например в следващия ред кодът създава списък от четири дати и кодът е напълно добре.

дати = [dt.date (2020,12,31), dt.date (2019,1,31), dt.date (2018,2,28), dt.date (2020,1,1)]

Компютърът със сигурност няма да има нищо против, ако създадете списъка по този начин. Но ако искате да направите кода по-четим за себе си или други разработчици, може да искате да създадете и добавите всяка дата, една по една, така че просто така е малко по-лесно да видите какво се случва и за да нямате да се справят с толкова много запетаи в един ред код. Изображението по-долу показва пример, при който е създаден празен списък с име дателист:

дателист = []

Тогава една дата по една бе добавена към списъка, използвайки синтаксиса dt.date (година, месец, ден).

След като списъкът е създаден, кодът използва datelist.sort (), за да ги сортира в хронологичен ред (най-рано до най-късно). Не е необходимо да използвате печат (дателист) в този код, защото този метод показва датите с включена информация за типа данни, като тази:

[datetime.date (2018, 2, 28), datetime.date (2019, 1, 31), datetime.date (2020, 1, 1), datetime.date (2020, 12, 31)]

Не най-лесният за четене списък. Така че, вместо да отпечатвате целия списък с едно изражение print (), можете да прегледате всяка дата в списъка и да отпечатате всяка от тях, форматирана с f-низ% m /% d /% Y. Това показва всяка дата на собствен ред в mm / dd / yyyy

Ако искате да сортирате елементи в обратен ред, поставете reverse = True вътре в скобите на sort () (и не забравяйте да направите главна буква в първата буква). Изображението по-долу показва примери за сортиране и на трите списъка в низходящ (обратен) ред, използвайки обратен = True.

Обръщане на списък на Python

Можете също да обърнете реда на елементите в списък, използвайки метода .reverse. Това не е същото като сортиране в обратен ред, защото когато сортирате отзад, всъщност все още сортирате: Z – A за низове, най-големи до най-малки по числа, последни до най-ранните за дати. Когато обърнете списък, просто обърнете елементите в списъка, независимо от реда им, без да се опитвате да ги сортирате по никакъв начин.

Следващият код показва пример, в който обърнете реда на имената в списъка и след това отпечатате списъка. Резултатът показва елементите на списъка, обърнати от първоначалния им ред:

# Създайте списък с низове.
имена = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
# Обърнете списъка
names.reverse ()
# Печат на списъка
печатат (имена)
 
['Джейк', 'Алберто', 'Хонг', 'Лупе', 'Зара']

Копиране на списък на Python

Ако някога ви се наложи да работите с копие на списък, използвайте метода .copy (), за да не променяте първоначалния списък,. Например, следният код е подобен на предходния код, с изключение на това, че вместо да обърнете реда на оригиналния списък, правите копие на списъка и го обърнете обратно. Отпечатването на съдържанието на всеки списък показва как първият списък е все още в първоначалния ред, докато вторият е обърнат:

# Създайте списък с низове.
имена = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
 
# Направете копие на списъка
backward_names = names.copy ()
# Обратно копие
backward_names.reverse ()
 
# Печат на списъка
печатат (имена)
печатат (backward_names)
 
['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake']
['Джейк', 'Алберто', 'Хонг', 'Лупе', 'Зара']

За бъдещи справки следващата таблица обобщава методите, за които сте научили.