2016-03-21 13 views

cevap

2

Eğer bir yineleyici kullanabilirsiniz, bir for döngü olmadan set dışına öğeleri almak için. Muhtemelen bu senin prof. atıfta bulunuyor. Örnek:

i = iter(s) 
while True: 
    try: 
     next(i) 
    except StopIteration: 
     break 
+0

Sondaki istisnayı önlemek için 'next (i, default)' diyebilirsiniz. – o11c

0

Bir while döngü içinde her şeyi yapabilir ama bazen garip olabilir. for döngüsüyle ilgili olan şey, bir dizi tüketmesidir. biz gerçekten istediği tüm s yılında endeksinde çünkü ilk Örneğin

, döngü

for i in range(len(s)): 
    print(i) 

i = 0 
while i < len(s): 
    print(i) 
    i += 1 

Kişisel İkinci örnek çünkü söyleyemezsin endeks setleri daha problemlidir oldukça yalındır. Muhtemelen, bunun üstesinden gelmenin en iyi yolu, seti bir listeye dönüştürmek ve bunu indekslemektir. Ya da kendi iteratörünüzü oluştururken ve iterasyon sonu istisnasını kendiniz işleyerek for'u taklit edebilirsiniz. C gibi bazı dillerde

a = set() 
for x in a: 
    print(x) 

# this would be illegal because you can't index the set 
i = 0 
while i < len(a): 
    print(a[i]) # ERROR 
    i += 1 

# so we make a list 
i = 0 
_a = list(a) 
while i < len(_a): 
    print(_a[i]) 
    i += 1 

# or use an iterator for the set 
a_iter = iter(a) 
while True: 
    try: 
     print(next(a_iter)) 
    except StopIteration: 
     break 

, while ...

while(x < 5)) {...} 
for(;x < 5;) {...} 

for sadece bir Kısaltılmış biçimidir ama gördüğünüz gibi, böyle piton durum böyle değildir.

İlgili konular