For range append yapmak için i'yi kullanmak

Merhaba, asıl amacınızı bilmemekle birlikte durumunuz SSS’deki "Benzer adlara sahip değişkenler oluşturmak istiyorum"a denk geliyor gibi (veya şuradaki soru). Yani a_i isimli ayrı listeler oluşturmaktansa bunları tek bir çatı (konteyner) altında toplamanız tavsiye olunur. Sizdeki a_i’lerin işlevini tam kestiremedim o yüzden listenin mi sözlüğün mü gideri daha fazla olur bilemiyorum.


Bununla beraber, tavsiye olunmamasına karşın yine de kodunuzu o şekle yakın bir biçimde çalıştırmanın yolu globals() denen, global değişkenleri (daha doğrusu içinde bulunduğu modülün namespace’ini) içerisinde “isim → değeri” diye tutan sözlükten geçiyor:

a3, a4, a5 = [], [], []
for j in range(3, 6):
    # f"a{j}" kısmı "a" + str(j)'ye denktir
    globals()[f"a{j}"].append("merhaba " * j)

print(a5)
# ['merhaba merhaba merhaba merhaba merhaba ']

“değişkenin ismi → değişkenin değeri” sözlüğü olduğu için anahtar olarak değişkenlerinizin isimlerini veriyoruz, bize değerini döndürüyor ki onlar da bir liste olduğu için .append ile işaret ettikleri listelere ekleme yapıyoruz.

print(globals()) diyerek kendisinin ne olduğuna bakabilirsiniz; ayrıntılı bilgi için https://stackoverflow.com/questions/12693606/reason-for-globals-in-python.

3 Beğeni