簡體   English   中英

從For循環中的特定點開始

[英]Starting from a specific point in a For loop

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

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

如何讓腳本從“Perl”開始? 我不需要它循環回來。

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

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

會給你:

Perl
Python

另請參閱: 解釋Python的切片表示法

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

您可以使用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接受兩個參數,一個確定列表元素是否等於所需起始值的函數,以及你想循環遍歷的iterable(在你的情況下是一個列表)。 dropwhile將跳過元素,直到找到滿足該函數的元素,然后它將輸出所有元素,直到iterable耗盡為止。

如果選擇起點的標准比簡單相等更復雜,則此選項非常有用。 例如,如果您想從以“P”開頭的第一個元素開始,您可以執行以下操作:

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

與此相反的是itertools.takewhile ,只要滿足所提供的函數,它就會迭代。

嘗試這個。 我希望這會對你有所幫助

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

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

輸出是:

Perl
Python
C
C++

在python中,for循環函數是(對於k in x(start,stop,step))。 這里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,如果你想輸出100.你應該這樣提到:

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

你可以試試 :

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

如果你想要從perl開始到列表末尾的元素

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

通過列表切片非常容易

print languages[2:]

輸出:

['Perl', 'Python']

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

即使你想要從perl到back-to-perl的環回元素,你也可以使用列表切片

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

輸出:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM