2014-12-08 3 views
-4

4 주 전에 프로그래밍을 시작했습니다. 나는 "Python을 배우는 것이 어렵다"라는 책을 읽었으며, 현재 "Python으로 Raspberry Pi 프로그래밍하기"를 배우고 있습니다. 위에서 작성한 코드는 완전히 혼란스럽고 내 머리를 감쌀 수 없습니다. 책에는 슬래시 색인이 나열되어 있다고 나와 있습니다 (저는 웹 봇에서 작업 중입니다). 난 for 루프에서 이와 같은 형식을 본 적이 없다. for 앞에 변수가있는 이유는 무엇입니까? 설명해주십시오 (영어로하십시오 : D).Python - "slashList = [i, ind in enumerate (시작) if ind == '/']"

감사합니다, 괄호 안에 "루프"

마이클

+2

그 목록에 대한 이해력으로 인해 인터넷에서 설명하는 내용을 잘 볼 수있을 것입니다. – thefourtheye

+0

https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions –

답변

0

이것은 목록 이해법으로, 파이썬에서 목록을 작성하는 루프를 실행하는 좀 더 간결한 방법입니다.

이 글을 쓰는의 긴 방법은 다음과 같습니다

공업은 '시작'목록에서 필드의 값의 이름을하고 난 (목록 또는 위치)의 인덱스

을 산업사됩니다
SlashList = [] 
for i, ind in enumerate(start): 
    If ind == '/': 
     SlashList.append(i) 

'ind'와 'start'가 특히 도움이되지 않는 변수 이름 인 경우 :-)

+0

정말 고맙습니다. 정말 도움이되었습니다. 기본적으로 start가 URL이면 enumerate는 URL의 모든 문자에 숫자를 할당하고 for 루프는 i (숫자)를 반복하고 ind (character)는 이것이 정확합니까? –

+0

예, 그러나 열거 형은 문자열이 아닌 목록에서 작동하므로 시작은 문자열이 아닌 열거 형을 사용하는 목록이어야합니다. 아마도 어딘가에 귀하의 코드에서 문자열 URL이 목록으로 바뀌고 있습니다. start가 문자열이면 다음과 같이 쉽게 문자 목록으로 바꿀 수 있습니다 : list (start) - 그렇게하면 위의 코드에서 그렇게됩니다 : for i, in in enumerate (list (start)) : – brobas

0

(A)는 "지능형리스트"라고합니다.

여기서 iterable의 각 항목에 대해 (index, item)의 튜플을 생성하는 반복자 인 enumerate(start)을 반복합니다.

이 반복자를 반복하여 인덱스를 i에 넣고 문자를 ind (이는 혼돈스럽고 가변적 임)으로 반복합니다. 각 항목에 대해 / 인 경우 색인이 최종 목록으로 이어 지므로 결국 목록은 문자열 (?) start에있는 모든 슬래시 색인으로 구성됩니다.

0

그것은 다음과 같은 코드와 같은 일을 수행합니다

slashList = [] 
i = 0 
for ind in start: 
    if ind == '/': 
     slashList.append(i) 
    i += 1 

그것은 한 줄에 모든에 집어 넣은 몇 가지 트릭을 사용합니다. 첫 번째 메시지는 list comprehension입니다. for 루프와 if 문을 다른 줄에 긋지 않고 목록을 만들 수 있습니다. 두 번째는 enumerate 내장 기능입니다. 이 항목 (여기서는 ind에 할당 됨)과 동시에 start과 같은 반복 가능 항목의 모든 항목에 대한 색인 i을 가져올 수 있습니다.