python array hk. ben kafayı yemeden yardım lütfen

Başlatan zamzam23, 18 Temmuz 2021, 21:55:57

zamzam23

Selamlar,
Python'da yeni sayılırım.

liste=[[a,b,c,d],
       [e,f,g,h],
       [k,l,m,d],
       [x,y,j,d],
       [p,r,s,z]]

şekilde bir array düşünün. Arrayin 0,2 ve 3. elemanının 3. indisleri aynı olsun. (d isimli indis)
Ben bu arrayde, 3. indisleri aynı olanları teke düşürmek istiyorum.

Yani istediğim yeni array:

liste2=[[a,b,c,d],
       [e,f,g,h],
       [p,r,s,z]]


Yardımcı olur musunuz?


 

muhendisbey

#1
Ben de çok iyi biliyorum diyemem, basitten gidelim. Üçüncü indisleri aynı olan array adreslerini nasıl buluruz?
1. ye baktık "d" aramak için işaretledik
2. ye baktık "h"
3. ye baktık "d" bunu kaydettik
4. ye baktık "d" bunu kaydettik
5. ye baktık "z"
arama kayıdı olduğu için 1'i tuttuk diğer adresini kaydettiklerimizi diziden attık. Döngüyü 2.'den itibaren tekrar başlattık

2. ye baktık "h" aramak için kaydettik
3. ye baktık "z"
tekrar yok dizi aynı

n-1 kere tekrar ettiğimiz için "z" ye bakmadık.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

zamzam23

Alıntı yapılan: muhendisbey - 18 Temmuz 2021, 23:11:38Ben de çok iyi biliyorum diyemem, basitten gidelim. Üçüncü indisleri aynı olan array adreslerini nasıl buluruz?
1. ye baktık "d" aramak için işaretledik
2. ye baktık "h"
3. ye baktık "d" bunu kaydettik
4. ye baktık "d" bunu kaydettik
5. ye baktık "z"
arama kayıdı olduğu için 1'i tuttuk diğer adresini kaydettiklerimizi diziden attık. Döngüyü 2.'den itibaren tekrar başlattık
2. ye baktık "h" aramak için kaydettik
3. ye baktık "z"
tekrar yok dizi aynı
n-1 kere tekrar ettiğimiz için "z" ye bakmadık.

Algoritmasını ben de kurabiliyorum ama teşekkürler yine de.

Python numpy kütüphanesi ile yapılabilir ama nasıl?

fide

liste=[["a","b","c","d"],
       ["e","f","g","h"],
       ["k","l","m","d"],
       ["x","y","j","d"],
       ["p","r","s","z"]]

eklenecekler = []
filtered =[]
for i in range(len(liste)):
    if liste[i][3] not in eklenecekler:
        eklenecekler.append(liste[i][3])
        filtered.append(liste[i])

print(filtered)

pycharm ile denedim çalıştı.
İlk önce boş bir iste oluştur. Sonra 3. elemanları bu listede var mı diye kontrol et. varsa pas geç yoksa ekle. listenin tüm elemanları içinkontrolü yapınca mükerrerlerden kurutlursun.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

muhittin_kaplan