Ubuntu Türkiye

Yazılım => Programlama => Python => Konuyu başlatan: 012rev3 - 09 Kasım 2016 - 17:54:14

Başlık: [Çözüldü] Liste/Değişkenden sıralı ve tekrarlanmayan numune almak?
Gönderen: 012rev3 - 09 Kasım 2016 - 17:54:14
Arkadaşlar merhaba.
Birkaç deneme yapmama rağmen oluşturduğum değişkenden rastgele olmadan numune almayı başaramadım. Rastgele olmamasının kuralını ya oluşturduğum listenin sıralamasıyla ya da alfabetik sırayla seçilmesini istiyorum.
Örneğin 'kavun', 'karpuz' listesinde kavun ilk seçilecek olan bu listeye 'armut' eklediğimizde listeden ilk seçilecek olan alfabetik sıralamaya göre armut. Listeye '0sifir' eklersem a dan önce 0 olacak.
Yani altalta olacak biçimde çıktı sıralaması = 0sifir,  armut, kavun, karpuz
Örneğimi şuraya göre de değiştirsem neticede orada da random modülü dönüyor. Bu yüzden işimi görmedi.
https://forum.ubuntu-tr.net/index.php?topic=53933.msg606992#msg606992 (https://forum.ubuntu-tr.net/index.php?topic=53933.msg606992#msg606992)
#!/usr/bin/env python3
import random
liste = ['elma', 'armut', 'kavun', 'karpuz', '0sifir']
for i in random.sample(liste, 1):
    print (i)

Bunu 'random.choice' ile de yapabiliyordum. Yani;
print random.choice(liste)
Neyse. Var mıdır listeden kurallı numune alabilmenin yolu? Belki cevap çok basit ama çözemedim doğrusu.
Ekleme;
kume = set(liste)
for i in range(10):

Küme içerisine aldıysam da liste kendini tekrarlıyor. Eğer on eleman yoksa listede çıkış yapsın mesela, listedeki numuneleri tekrarlamasın.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 09 Kasım 2016 - 19:04:34

Sorunu şu şekilde çözdüm aslında ama alfabetik sıraya dizemedim. Bu çözümü neden görememişim acaba  ??? Çok farklı sularda yüzmüşüm.
Kaynak: http://belgeler.istihza.com/py3/kumeler_ve_dondurulmus_kumeler.html (http://belgeler.istihza.com/py3/kumeler_ve_dondurulmus_kumeler.html)
#!/usr/bin/env python3
liste = ['elma', 'armut', 'kavun', 'karpuz', '0sifir']
for i in set(liste):
    print (i)

Bu sayede hem listedeki elemanlar tekrarlanmıyor(set özelliği 'küme') ayrıca tek tek numune alıyor hem de altalta çıktı veriyor. Tek sorun yukarıda belirttiğim alfabetik sıralamaya göre oluşturmaması.
Aceleci davrandığım için üzgüm.  Eğer alfabetik sıralama çözümü varsa veya bulana kadar konuyu açık tutalım. Yoksa konuyu çözdüldü diye etiketlerim. Biraz daha bekleyelim.
Başlık: Ynt: Liste/Değişkenden sıralı ve tekrarlanmayan numune almak?
Gönderen: ShangriLa - 09 Kasım 2016 - 21:18:31

for i in sorted(set(['elma', 'armut', 'kavun', 'karpuz', '0sifir', 'elma', 'kavun'])):
    print(i)
Başlık: Ynt: Liste/Değişkenden sıralı ve tekrarlanmayan numune almak?
Gönderen: 012rev3 - 10 Kasım 2016 - 14:25:39
Terminal ekranından sınıflandırmak durumunda kalmıştım. Bu şekilde sorunsuz çalıştı. Çok teşekkürler.