Python Listede pop komutu kullanmadan nasıl işlem yapılır?

attemps

Decapat
Katılım
15 Şubat 2023
Mesajlar
37
Daha fazla  
Cinsiyet
Erkek
Oncelikle ben yeni Python ogrenmeye başladım ve buradaki sorunu anlamadim. Yardimci olursnaiz sevinirim.
Problem, ben bu listeyi olusturdugumda aşağıdaki gibi bir sonuç cikiyor. Ama bana yukaridaki sekile cevirmemi istiyor.
Simdiden teşekkürler.

# Pop komutunu kullanmayarak listeyi nasıl [1,2,[4,5]] sekline cevirebilirsiniz?

List4 = [1,2,3,[4,5]]
List5 = list4[:2] + list4[-1]
Print(list5)
Sonuç; [1,2,4,5]
 
Python:
l1 = l1[:2] + [l1[-1]]
Şeklinde yazarsanız istediğiniz sonuca ulaşırsınız. Başka değişkenlere geçmenize de gerek yok.
1710005293427.png

Ek olarak remove() metodu da var.
 
Denemenizi düzeltelim:

Python:
list4 = [1, 2, 3, [4, 5]]
list5 = list4[:2] + list4[-1]
print(list5)

2. satıra odaklanalım:

Python:
list5 = list4[:2] + list4[-1]
  1. list4[:2]: İlk 2 elemanı barındıran alt listeyi yani [1, 2]'yi bu şekilde elde etmişsiniz, güzel.
  2. list4[-1]: Sadece son elemanı barındıran alt listeyi almak istemişsiniz ancak dikkat ederseniz bu bir alt liste değil, direkt son elemanın kendisi yani [4, 5]. Bunu da [1, 2] alt listesiyle birleştirmeye kalktığınızda elinizde [1, 2, 4, 5]kalır.
    • Ayrıca son eleman [4, 5] gibi bir liste yerine 36 gibi bir sayı olsaydı list5 = list4[:2] + list4[-1] concatenation işlemi hata verecekti: TypeError: can only concatenate list (not "int") to list. Deneyebilirsiniz, örneğin list4[-1] yerine list4[1] falan yazın.
Peki nasıl düzelteceğiz? Üstteki arkadaşımızın paylaştığı gibi başka yöntemler de var tabii fakat ilk 2 elemanı ayıklamak için kullandığınız yöntemi ikinci adım için de kullanabiliriz. Nasıl mı?
  • list4[-1] yerine list4[-1:] yazabiliriz! Sadece son elemanı barındıran alt liste.
Bu şekilde slicing işlemini kullanmak hayatımızı kolaylaştırıyor, öyle ki genel bir fonksiyon bile yazabiliriz!

Python:
# Nasıl isim ama? :D
def pop_without_pop(list_to_pop, pop_index):
    assert pop_index >= 0 # :)
    return list_to_pop[:pop_index] + list_to_pop[pop_index + 1:]



Başka değişkenlere geçmenize de gerek yok.

Genel bir yorum yapmak isterim: Tabii tekniken gerek yok ama orijinal listeye dokunmak yerine kopyasıyla işlem yapılması daha uygun göründü. Böyle bir yönteme alışmak daha sağlıklı olacaktır diye düşünüyorum.
 

Technopat Haberler

Geri
Yukarı