cu =iter(['aba', 'saba', 'kaba'])
ku=['aba', 'saba', 'kaba']
#len(cu) ifadesini iterable olarak kabul etmediği için
# aynı listeyi (iter)siz olarak kopyaladım
for i in range(len(ku)):
m=next(cu)
print(m)
n=next(cu)
print(n)
o=next(cu)
print(o)
p=next(cu)
print(p)
Çıktı şöyle:
aba
saba
kaba
Traceback (most recent call last):
File "C:/Users/Pc/Python/Python37/sil5.py", line 14, in <module>
p=next(cu)
StopIteration
listede kaç eleman olduğunu bilmiyorsam, m,n,o,p değişkenlerinden kaç tanesini kullanacağımı da bilmiyorum. bu yüzden, len(ku) da kesileceğini varsayarak fazladan değişken kullanıyorum. for döngüsü de iterasyonu len(ku) da kesmiyor.
m=aba
n=saba
n=kaba
çıktılarını nasıl alabilirim? Amacım dinamik olarak liste elemanlarına değişken atamak. Eğer liste elemanlarına döngü ile değişken atamak istersem;
for i in ku:
m=ku[i]
print[m]
m=ku[i]
TypeError: list indices must be integers or slices, not str
sözlük değerlerine (veya anahtarlara) tek tek nasıl ulaşabilirim?
m=aba
n=saba
o=kaba
tam olarak bu eşitliğe, teker teker ihtiyacım var, döngü içinde eşitlik yazdığım zaman
keyword can not be an expression
hatası alıyorum. Belki de döngü değerlerini nasıl kullanacağımı bilmiyorum henüz. “print” edip ekranda gördükten sonra ona bir değişken atamaktan başka yol bilmiyorum. çözüm “return” kullanmaksa, burada nasıl kullanmalıyım? Yani döngüden, “n=saba” sonucunu nasıl alırım?
print(sozluk.keys(n))
NameError: name 'n' is not defined
Sorunumu iyi anlatamadığım için özür dilerim. Gerçekte olay şu:
# cu[] listesi, tablo sorgusundan alınıyor
cu=['? kabak yedi', 'kim kabak yedi', 'ömer kabak yedi',
'ömer kara kabak yedi', 'emel kabak yedi']
# cu[] içinde kaç adet eleman olacağını bilemediğim için, değişkenleri
# fazla sayıda stokluyorum.
değişkenler=['a','b','c','d','e','f','g','h','j','k','l','m']
del değişkenler[len(cu):]# değişkenleri cu[] sayısına indiriyorum
sozluk = {}
for i in range(len(cu)):
sozluk[değişkenler[i]] = cu[i]
# elemanları kelimelere ayırıp,
a=set(cu[0].split())
b=set(cu[1].split())
c=set(cu[2].split())
d=set(cu[3].split())
e=set(cu[4].split())
#Yukarıdaki setleri menuel olarak oluşturdum. değişkenleri len(cu) ile
# seçemedim.
# sonra farklı kelimeleri(aslında kısa cümlelerin öznelerini) buluyorum
# ortak olan "kabak" ve "yedi" kelimelerini atıyorum
aa=set.union(a,b,c,d,e)-set.intersection(a,b,c,d,e)
# burada "?" ve "kim" kelimelerini de atıyorum
print(aa)
for i in aa:
if i=="?" or i=="kim":
continue
print(i)# output: ömer, kara, emel
#sorun şu ki: set oluştururken değişkenleri "e" de kesemiyorum. len(cu) sayıda
#set oluşturmayı nasıl başarabilirim? len(cu) gelecek sorguda 5 değil 15
#veya 8 olabilir ve ben bunu bilemeyeceğim.
Derdimi kısaca anlatayım derken, hiç anlatamama riskini dikkate almıyorum anlaşılan. Tekrar özür dilerim.
Eğer yazdığım kodların sonundaki çıktıyı her liste için verecek o iki satır kodu yazarsanız daha kolay anlayacağım. Yeni öğrenen biri için bu emeği çok görmeyin lütfen.
Iki satir yazmanin emegini cok gormuyorum – hatta bu baslikta 20 dakikadan fazla harcamisimdir. Programcilik hayatiniz boyunca dogru sorulari sorabilmeniz icin gereken bilginin bir kismini veren makalenin Turkcesini buldum, linkledim. Okudunuz mu acaba?
Çok teşekkür ederim, en pratik çözüm oldu. Ben de şunları bulmuştum:
counts = Counter(chain.from_iterable(su))
farklı = [k for k, c in counts.items() if c == 1]
#ve
for i in range(len(su) - 1):
for j in range(i + 1, len(su)):
intsec = set(su[i]).union(su[j])-set(su[i]).intersection(su[j])
#Bu döngü sıralı ınion ve intersect yaptığı için genelde saçmalıyor gerçi.
Düşündüklerimi kodlara dökmek için daha epeyce çalışmam gerektiği anlaşılıyor.
Yeniden teşekkürler.