CodeGym /Kurslar /Python SELF AZ /Siyahılarla Praktik İş

Siyahılarla Praktik İş

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

9.1 Siyahının surətinin yaradılması

Python-da siyahının surətini yaratmaq - vacib bir işdir və siyahılarla işləyərkən məlumatların gözlənilməz dəyişikliklərindən qaçmaq üçün lazımlı ola bilər. Siyahılarla işləyərkən səthi (shallow) və dərin (deep) surət arasındakı fərqləri başa düşmək vacibdir.

Səthi surət

Səthi surət yeni bir siyahı yaradır, amma elementlər eyni qalır (əgər elementlər referanslardırsa, onlar referans kimi kopyalanır). Bu bir neçə üsulla edilə bilər:

list() funksiyasından istifadə edərək:


original = [1, 2, 3]
copy = list(original)

Dilimlərdən istifadə:


original = [1, 2, 3]
copy = original[:]

copy() metodu:

Dərin surət

Dərin surət yeni bir siyahı yaradır və siyahıda yerləşən bütün daxili obyektlərin də surətlərini yaradır. Bu xüsusilə siyahılar başqa dəyişə bilən məlumat tipləri (məsələn, başqa siyahılar) saxlayanda vacibdir. Bunun üçün copy modulu istifadə olunur:


import copy
original = [[1, 2], [3, 4]]
deep_copy = copy.deepcopy(original)

Hansı üsulu nə vaxt istifadə etmək lazımdır

Səthi surət daha sürətlidir və elementlər sadə və ya təkrar surətlənməyən (məsələn, sətirlər və ya rəqəmlər) olduğunda uyğundur. Dərin surət isə lazım olur ki, siyahının elementləri özləri dəyişə bilən kolleksiyalar olduqda ya da surətdəki dəyişikliklər orijinalda əks olunmasın.

9.2 Listdən elementin silinməsi

Eyni zamanda həm sadə, həm də mürəkkəb bir iş var: dövrün içində listdən element(lər)in silinməsi.

Listdən keçmək üçün for dövründən istifadə etdiyimizdə, list iterator adlı xüsusi bir törəmə obyekt qaytarır, hansı ki for dövrü bütün elementlərini keçmək üçün istifadə edir. Və əgər iterator (for dövrü ilə) istifadəsi zamanı listdən bir element silinsə, iterator düzgün işləməyə bilər.

Əgər 3-cü elementi sildinizsə, 4-cü avtomatik olaraq 3-cü olacaq. Amma for dövrü, iterator vasitəsilə, yeni 4-cü elementə keçəcək, hansı ki əvvəlcə 5-ci idi. Deməli, 4-cü element keçiləcək.

Elementləri təhlükəsiz şəkildə silmək üçün bir neçə metod:

remove() metodundan istifadə

Əgər hansı elementin silinməsi lazım olduğu dəqiq bilinir, dövrün içində remove()-dan istifadə etmək olar. Amma bu metoda çox element varsa effektiv olmaya bilər, çünki hər remove() çağırışı elementi axtarır və bu, icranı ləngidir.

Yeni bir list yaratmaq

Daha təhlükəsiz bir üsul — yalnız lazımi elementləri saxlayan yeni bir list yaratmaqdır:


original_list = [1, 2, 3, 4, 5, 6]
new_list = [x for x in original_list if x % 2 != 0]  # yalnız tək ədədləri saxlayırıq

Indexlərdən istifadə

Elementləri təhlükəsiz şəkildə silmək üçün tərs indexlərlə for dövründən istifadə etmək olar:


for i in range(len(original_list) - 1, -1, -1):
    if original_list[i] % 2 == 0:  # silmək üçün şərt
        del original_list[i]

Listin sonundan irəliyə doğru keçdikdə, silinən elementlər yalnız artıq keçilmiş indexlərə təsir edir.

Listin surətindən istifadə:

Tutaq ki, listdən bütün mənfi ədədləri silmək istəyirsiniz:


numbers = [1, -1, 2, -2, 3, -3]
# Təhlükəsiz keçmək üçün listin surəti yaradılır
for number in numbers.copy():
    if number < 0:
        numbers.remove(number)
print(numbers) # [1, 2, 3] nəticəni göstərir

9.3 Siyahıların birləşdirilməsi

Tez-tez iki və ya daha çox siyahını birləşdirib bir siyahı yaratmaq lazım olur. Bunu bir neçə üsulla etmək olar, hər biri müxtəlif tapşırıqlar üçün uyğundur və özünəməxsus xüsusiyyətlərə malikdir.

+ operatorundan istifadə

İki siyahını birləşdirməyin ən sadə üsulu + operatorundan istifadə etməkdir. Bu, sadə və intuitiv bir metoddur:


list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = list1 + list2
print(combined_list)  # [1, 2, 3, 4, 5, 6] çap edəcək

extend() metodu

extend() metodu birinci siyahını modifikasiya edir, ikinci siyahının bütün elementlərini sonuna əlavə edir. Bu, ilkin siyahını dəyişir:


list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # [1, 2, 3, 4, 5, 6] çap edəcək

Siyahı daxil etmələr (List Comprehensions)

Siyahı daxil etmələr müxtəlif siyahıların elementlərini birləşdirərək kompleks yeni siyahılar yaratmaq üçün istifadə edilə bilər:


list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = [item for sublist in [list1, list2] for item in sublist]
print(combined_list)  # [1, 2, 3, 4, 5, 6] çap edəcək

append() metodu

2-ci siyahının hər bir elementini 1-ci siyahıya bir-bir əlavə etmək olar. Bir variant kimi bunu da nəzərə ala bilərsiz.


list1 = [1, 2, 3]
list2 = [4, 5, 6]
for x in list2:
    list1.append(x)
print(list1)  # [1, 2, 3, 4, 5, 6] çap edəcək

Əslində, siyahılar barədə sizə danışmaq istədiklərim bu qədər idi 😊

1
Опрос
Python-da Siyahılar,  7 уровень,  9 лекция
недоступен
Python-da Siyahılar
Python-da Siyahılar
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION