Python 목록 반복을위한 시작 색인
Python에서 목록을 반복 할 때 시작 색인을 설정하는 가장 좋은 방법은 무엇입니까? 예를 들어, 요일 목록 (일요일, 월요일, 화요일 ... 토요일)이 있지만 월요일부터 시작하는 목록을 반복하고 싶습니다. 이를 수행하는 가장 좋은 방법은 무엇입니까?
슬라이싱 을 사용할 수 있습니다 .
for item in some_list[2:]:
# do stuff
이것은 세 번째 요소에서 시작하여 끝까지 반복됩니다.
islice
목록의 일부를 복사 할 필요가 없다는 장점이 있습니다.
from itertools import islice
for day in islice(days, 1, None):
...
인덱스 카운터를 사용하여 항상 기존 C 스타일 루핑을 반복 할 수 있습니다.
for i in range(len(l)-1):
print l[i+1]
항상 "모든 요소에 대한 루프"스타일을 따르는 것이 낫습니다. 왜냐하면 그것이 정상적인 일이기 때문입니다. 그러나 그것이 방해가된다면, 항상 전통적인 스타일도 지원된다는 것을 기억하십시오.
stdlib는 아들을 연결합니다!
#!/usr/local/bin/python2.7
from collections import deque
a = deque('Monday Tuesday Wednesday Thursday Friday Saturday Sunday'.split(' '))
a.rotate(3)
deque(['Friday', 'Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday'])
계속해서 인쇄 하는 것뿐이라면 의 방법을 Monday
사용 하여 목록에서 "Monday"가있는 위치를 찾고 다른 게시물에서 설명한대로 거기에서 반복 할 수 있습니다. 를 사용 하면 잠재적 인 오류 원인 인 "월요일"에 대한 색인을 하드 코딩 할 수 있습니다.list
index
list.index
days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
for d in days[days.index('Monday'):] :
print d
여기에 입력 시퀀스의 뒤틀린 복사본을 만들 필요가없는 회전 생성기가 있습니다 ... 입력 시퀀스가 7 개 항목보다 훨씬 큰 경우 유용 할 수 있습니다.
>>> def rotated_sequence(seq, start_index):
... n = len(seq)
... for i in xrange(n):
... yield seq[(i + start_index) % n]
...
>>> s = 'su m tu w th f sa'.split()
>>> list(rotated_sequence(s, s.index('m')))
['m', 'tu', 'w', 'th', 'f', 'sa', 'su']
>>>
월요일 이전에 항목을 잘라내는 대신 월요일부터 시작하도록 목록을 "둘러싸고"효과적으로 회전하려는 경우 :
dayNames = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday', ]
startDayName = 'Monday'
startIndex = dayNames.index( startDayName )
print ( startIndex )
rotatedDayNames = dayNames[ startIndex: ] + dayNames [ :startIndex ]
for x in rotatedDayNames:
print ( x )
참고 URL : https://stackoverflow.com/questions/6148619/start-index-for-iterating-python-list
'Program Tip' 카테고리의 다른 글
이름에 Pandas DataFrame의 특정 문자열이 포함 된 열을 삭제합니다. (0) | 2020.11.06 |
---|---|
URL 쿼리에 대한 NameValueCollection? (0) | 2020.11.06 |
JavaFX 2.0에서 공통 대화 상자 (오류, 경고, 확인)를 만들고 표시하는 방법은 무엇입니까? (0) | 2020.11.06 |
C ++ : 레지스터에 피연산자 하나를 유지하여 놀라운 속도 향상 (0) | 2020.11.05 |
HTML / CSS UI로 네이티브 C ++ 앱을 빌드하는 방법은 무엇입니까? (0) | 2020.11.05 |