Büyük bir liste ise ve yalnızca bir kez ids işlemeniz gerekiyorsa, o zaman jeneratör ifadeleri de vardır.
ids = (obj.id for obj in my_objects)
for id in ids:
do_something(id)
Bir jeneratör ifade rasgele erişim desteklemez ama size talep üzerine her kodu oluşturulacaktır ve bu yüzden tek seferde bir listesini oluşturmaya önler. Jeneratör ifadeleri, range
numaralı liste için xrange
numaralı listeye aittir.
Generatör ifadeleriyle ilgili bir uyarı, yalnızca içindeki herhangi bir kaynak hala açık olduğu sürece erişilebilmesidir. Örneğin, aşağıdaki kod başarısız olur.
with open(filename) as f:
lines = (line for line in f)
# f is now closed
for line in lines:
print line
eşdeğer liste anlama bu durumda çalışacak. , Aklı başında
Sağ .. Liste tanımlama: ASQ başka özelliği ile kombine
veya. Bunları unuttum :) – mpen