지도에서 루프를 만들고 싶습니다. 내 코드는 다음과 같습니다.파이썬 맵에서 루프를 수행하는 방법은 무엇입니까?
for (abcID,bbbID) in map(abcIdList,bbbIdList):
buildXml(abcID,bbbID)
이 작업을 수행하려면 어떻게해야합니까?
지도에서 루프를 만들고 싶습니다. 내 코드는 다음과 같습니다.파이썬 맵에서 루프를 수행하는 방법은 무엇입니까?
for (abcID,bbbID) in map(abcIdList,bbbIdList):
buildXml(abcID,bbbID)
이 작업을 수행하려면 어떻게해야합니까?
당신은 섞어 ... 대신 zip()
싶은 생각 map()
및 zip()
또는 dict()
.
map
은 반복 가능 객체에서 작동하며 두 개의 인수, 함수와 반복 가능합니다 :
>>> def addOne(x):
... return x+1
...
>>> l = [1, 2, 3, 4]
>>> print(map(addOne, l))
[2, 3, 4, 5]
그래서는 시퀀스의 각 요소에 대한 첫 번째 인수로 전달 된 함수를 적용하고 (목록으로 메모를 새로운 순서를 반환 이 동작은 목록 대신 iterable을 얻는 python3에서 다름).
zip()
대신 원하는 것을 수행합니다. 이 반복 가능 객체 인해 임의의 양을 취하여 하나의 튜플 각각의 반복 공정을 함께 병합 :
>>> l1, l2 = [1, 2, 3, 4], [5, 6, 7, 8]
>>> print(zip(l1, l2))
[(1, 5), (2, 6), (3, 7), (4, 8)]
가 다시, 결과 값이 python2의 목록 python3의 반복기이다. 당신은 당신의 질문에서했던 것처럼 일반적인 for 루프를 사용하여 반복 할 수 있습니다. 그러나
>>> d = dict(zip(l1, l2))
>>> d[1]
5
>>> d
{1: 5, 2: 6, 3: 7, 4: 8}
, 직접의 키 - 값 쌍을 반복 할 수 없습니다 이러한 압축 반복자의 당신은 또한 (또한 값 항목을 매핑 등의 지도를 호출 할 수있다)을 dict
만들 수 dicts : 우리가 dict
아닌 int
통과로이, 다소 모호한 오류 메시지입니다
>>> for key, value in d:
... print(key)
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
! 도대체 어디서 오는거야 int
?
>>> list(d)
[1, 2, 3, 4]
을하지만 우리는 우리의 가치에 unpacking을 할 파이썬을 지시하십시오 dict
반복 할 때 기본적으로, 하나는 키 반복됩니다. 그래서 그것은 분명히 작동하지 않는 하나의 int에서 두 개의 값을 얻으려고 시도합니다. 그 점에서 오류는 합리적인 것처럼 보입니다. 그래서 사람이 사용하는 키 - 값 쌍을 반복합니다 :
>>> for key, value in d.items():
... print(key, value)
...
1 5
2 6
3 7
4 8
(출력은 __future__
에서 print_function
수입 여부에 따라 다를 수 있습니다). 큰 dict와 python2의 경우, iteritems()
은 items()
보다 빠릅니다. items()
은 모든 키 - 값 쌍을 먼저 목록에 넣고, iteritems()
은 지연 반복자 만 만듭니다. python3에서 items()
은 이미 이와 비슷한 작업을 수행합니다.
상황을 조금 분명히 밝히기를 바랍니다.
고마워요, 조나스. 나는 당신의 대답을 받아 들였습니다. 좋은 하루 되세요! – Nancy
무엇을하고 싶습니까? 이제 어떻게합니까? –
'map()'이 무엇을해야하는지 이해하고 있습니까? – msvalkon
어쩌면 늦었지만지도와 목록에 대한 간단한 자습서가 있습니다. http://www.dreamsyssoft.com/python-scripting-tutorial/lists-maps-tutorial.php –