2016-03-21 44 views
-2

我對python還是有點新東西,我可以用while循環做任何事情,但我仍然無法理解這一點。 for i in range(len(s)): for x in a: <- where a is an empty set如何在python中將循環換成while循環

+0

請在您的問題中編寫代碼時使用代碼塊。你在這裏問什麼也不清楚。 – sramij

回答

2

要獲得項目走出了一條set沒有for循環,你可以使用一個迭代器。這可能是你的教授。指的是。例如:

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

請注意,您可以調用'next(i,default)'來避免最後的異常。 – o11c

0

你可以做一切在while循環,但有時也可以是尷尬。關於for循環的一點是它消耗一個序列。

爲了您的第一個例子中,循環是非常簡單的,因爲所有我們真正想要的是在指數s

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

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

你的第二個例子是更多的問題,因爲你不能索引集。可能的,處理它的最好方法是將該集合轉換爲列表和索引。或者你可以模仿for通過創建你自己的迭代器並自己處理迭代結束異常。

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 

在像C一些語言,whilefor只是一個簡寫爲形式...

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

但正如你所看到的,這樣是不是蟒蛇的情況。