편집 : 내 앞에서 어리석은 논리가 나왔습니다. 아무도 이해력의 호출로부터의 반환 일뿐입니다. 좋아, 파이썬에서 몇 가지 테스트를 실행하고 실행 순서의 차이점에 약간의 차이가있어서 구현 방법을 이해할 수 있지만 훌륭한 사용자가 실행하도록하고 싶습니다. 내가 옳은지 아니면 더 많이 있는지보십시오. 이해력이 어떻게 든 실제로 코드를 실행하기 전에 목록의 각 요소에 대해 함수를 호출하는 반면, 다음 iteratable 요소는 다음 몸을 적용 가져옵니다행동에 대한 파이썬 목록 이해 VS
>>> a = ["a","b","c","d","e"]
>>> def test(self,arg):
... print "testing %s" %(arg)
... a.pop()
...
>>>[test(elem) for elem in a]
testing a
testing b
testing c
[None, None, None]
>>> a
['a', 'b']
#now we try another syntax
>>> a = ["a","b","c","d","e"]
>>> for elem in a:
... print "elem is %s"%(elem)
... test(elem)
...
elem is a
testing a
elem is b
testing b
elem is c
testing c
>>> a
['a', 'b']
>>>
지금이가에 ELEM의가 있음을 알려줍니다 :이 코드를 고려 함수 (pop)에서 목록을 수정하면 [none, none, none]이됩니다.
이게 맞습니까? 여기서 무슨 일이 일어나고있는거야?
덕분에
'test()'는 아무것도 반환하지 않으므로'None'을 반환합니다. (BTW, 당신은'self' 매개 변수를 삭제해야합니다.) –
예, 저는 주위를 놀고 있습니다. 만약 그들이 정말로 동등한 지 알고 싶었지만 ... 여기에 실행 명령에 뭔가가 있습니다. – cromestant
컬렉션을 반복하는 동안 (항목 추가 또는 삭제) 컬렉션의 크기를 변경하면 처벌 될 수 있습니다. – delnan