2017-01-09 48 views
2

是否可以告訴For循環從特定位置開始?從For循環中的特定點開始

>>> languages = ["C", "C++", "Perl", "Python"] 
>>> for x in languages: 
...  print(x) 
... 
C 
C++ 
Perl 
Python 
>>> 

我怎樣才能讓腳本從「Perl」開始?我不需要它迴環繞。

+1

通過切片清單並迭代通過該 – Li357

+0

[另請參閱](http://stackoverflow.com/questions/176918/find這是一個包含Python-in-the-index-of-a-item-given-a-list) – user25064

+0

[遍歷列表的一部分的pythonic方法]的可能副本(http://stackoverflow.com/問題/ 8671280/pythonic-way-to-iterate-over-part-of-a-list) – SiHa

回答

2

列表可以使用myList[start:stop:skip]的索引進行切片。從第三指數(零索引),沒有停止,也沒有索引跳躍開始,將是:

for x in languages[2::]: 
    print x 

會給你:

Perl 
Python 

參見:Explain Python's slice notation

+0

什麼是x語言[languages.index(「Perl」)::]? –

+0

@AriGold我不知道那是什麼..它爲我產生語法錯誤 – davedwards

+0

真的,沒辦法,用語言[languages.index(「Perl」):]替換語言[2 ::],給索引的Perl,所以不需要INT –

1

你可以使用itertools.dropwhile此:

>>> import itertools 

>>> languages = ["C", "C++", "Perl", "Python"] 

>>> for language in itertools.dropwhile(lambda x: x != 'Perl', languages): 
...  print(language) 
... 
Perl 
Python 
>>> 

itertools.dropwhile起飛s兩個參數,一個函數,用於確定列表元素是否等於您想要的起始值,以及迭代器(您的案例中的列表)是否要循環。 dropwhile將跳過元素,直到找到滿足該函數的元素,然後它將輸出所有元素,直到迭代器耗盡。

如果您選擇起點的標準比簡單平等更復雜,這很有用。例如,如果你想從以「P」開頭的第一個元素開始,你可以這樣做:

>>> for language in itertools.dropwhile(lambda x: not x.startswith('P'), languages): 
...  print(language) 
... 
Perl 
Python 
>>> 

的這種反向是itertools.takewhile,這將重複,只要所提供的功能是滿足。

2
languages = ["C", "C++", "Perl", "Python"] 
# add start index range by the index of "Perl" 
for x in languages[languages.index("Perl"):]: 
    print(x) 

# Perl 
# Python 

for x in languages[languages.index("C++"):]: 
    print(x) 

# C+= 
# Perl 
# Python 
1

試試這個。我希望這將幫助ü

languages = ["C", "C++", "Perl", "Python"] 

for k in range(0,len(languages)): 
    print(languages[k-2]) 

,輸出是:

Perl 
Python 
C 
C++ 

在Python for循環功能(在X K(啓動,停止,步驟))。 x是列表或字符串變量和

start : Indicates where the for loop should start and the index starts from zero. 

stop : Indicates where the for loop ends. It takes up to (n-1) elements. 

例如:

for k in range(0,100): 

它給直到99輸出零,如果u想100的U輸出應該提到這樣的:

n = 100 
for k in range(n+1): 
    print k 

輸出是從0到100.在這種情況下for循環將從零開始索引(開始)。

step : Indicates how many steps should do in for loop. By default step is one in for loop. 

例如:

for k in range(0,10,1): 
    print k 
#output is 0,1,2,3,4,5,6,7,8,9 


for k in range(0,10,2): 
    print k 
#output is 0,2,4,6,8 

for k in range(0,10,3): 
    print k 
#output is 0,3,6,9 
0

如果你想從Perl的開始到列表

languages = ["C", "C++", "Perl", "Python"] 
print languages 

它通過列表很容易結束元素切片

print languages[2:] 

輸出:

['Perl', 'Python'] 

你可以循環這個列表並獲取單獨的行上的元素。

,即使你想從Perl的環回元素備份到perl的,然後你也可以使用列表切片

a = [] 
a.extend(languages[2:]) 
a.extend(languages[:2]) 
print a 

輸出:

['Perl', 'Python', 'C', 'C++'] 
1

你可以試試:

languages = ["C", "C++", "Perl", "Python"] 
for i in range(languages.index("Perl"),len(languages)): 
    # 1st parameter of range will find Perl's index from list languages 
    #2nd parameter - Length of list 
    print languages[i] 


Perl 
Python