2017-12-21 1 views
-2

나는 다이빙에서 파이썬 3 권의 책으로 파이썬을 배우고 있는데,리스트의 이해가 무작위인지 아닌지를 설명하지 못했습니다.목록에있는이 변수들은 무작위로 표시됩니까?

import os, glob 

glob.glob('*.xml')         ① 
    ['feed-broken.xml', 'feed-ns0.xml', 'feed.xml'] 

[os.path.realpath(f) for f in glob.glob('*.xml')] ② 
    ['c:\\Users\\pilgrim\\diveintopython3\\examples\\feed-broken.xml', 
    'c:\\Users\\pilgrim\\diveintopython3\\examples\\feed-ns0.xml', 
    'c:\\Users\\pilgrim\\diveintopython3\\examples\\feed.xml'] 

은 F에서 온 않습니다 여기에 예는 파이썬 쉘에서 실행됩니다? 그것은 무작위인가?

+0

'glob.glob()'는 현재 디렉토리에서 작동합니다. 이 명령은 모든'* .xml' 파일을 가져옵니다. 거의 무작위 * 무언가가 있고 거기있을 때, 명백하게 언급 될 확률이 높습니다. –

+1

* "무작위입니까?"* 무엇을 의미합니까? 당신은 * "저자가 어떻게 그것을'f'라고 부르기로 결정 했습니까?"*? 우리는 정말로 대답 할 수 없습니다. ** ** 위치를 나타내는 문자열이 될 것이기 때문에 추측 할 수 있지만, 물어보아야 할 것입니다. * "어디에 정의되어 있습니까?"*라고 말하면 바닐라의 for 루프와 똑같이'for f'에 있습니다. – jonrsharpe

+2

로컬 변수'f'의 이름은 임의의 것입니다 (즉, 유효한 식별자를 선택할 수 있습니다). 희망적이고 아마도 아마 * 무작위 *는 아닙니다. – Alfe

답변

3

나는 당신이 인지 여부를 물어 본다고 가정합니다.입니다. 네, f 대신에 어떤 이름이라도 사용할 수 있습니다, e. 지. os.path.realpath(xmlfile) for xmlfile in glob.glob('*.xml'). 지능형리스트로

l = [] 
for <var> in <val>: 
    l.append(<expression>) 

같은 일 :

[<expression> for <var> in <val>] 

그래서 os.path.realpath(f)ffor f in ...에 이름

0

지능형리스트는이 패턴에 대한 속기 형태입니다. 원하는 이름을 선택할 수 있습니다. 유일한 예외는 변수를 선언하기 전에 변수를 참조하는 것처럼 보이지만 이는 단지 우연의 일치입니다. 당신이 입증 된 바와 같이 제

glob.glob

0

는 목록을 반환합니다. 해당 목록의 순서는 glob으로 정의됩니다. 목록 이해에서 반복 할 때 반복 순서는 목록의 순서입니다.

파일이 원래 순서대로 반환되는 이유가 궁금하신 경우 glob의 결과 순서를 살펴보십시오.

+0

그의 질문은 값이 아니라 변수'f'에 관한 것입니다. – Barmar