如何在Python映射中执行循环?
我想在地图上做一个循环。我的代码如下:如何在Python映射中执行循环?,python,loops,map,Python,Loops,Map,我想在地图上做一个循环。我的代码如下: for (abcID,bbbID) in map(abcIdList,bbbIdList): buildXml(abcID,bbbID) 我该怎么做才能让它工作?嗯,我想你应该用zip()来代替 >>> zip((1, 2), ('a', 'b')) [(1, 'a'), (2, 'b')] 呃,我想你想要的是zip() >>> zip((1, 2), ('a', 'b')) [(1, 'a'), (
for (abcID,bbbID) in map(abcIdList,bbbIdList):
buildXml(abcID,bbbID)
我该怎么做才能让它工作?嗯,我想你应该用
zip()
来代替
>>> zip((1, 2), ('a', 'b'))
[(1, 'a'), (2, 'b')]
呃,我想你想要的是
zip()
>>> zip((1, 2), ('a', 'b'))
[(1, 'a'), (2, 'b')]
你搞错了,或者
map
对iterables进行操作,并接受两个参数,一个函数和一个iterable:
>>> def addOne(x):
... return x+1
...
>>> l = [1, 2, 3, 4]
>>> print(map(addOne, l))
[2, 3, 4, 5]
因此,它将作为第一个参数传递的函数应用于序列的每个元素,并以列表的形式返回新序列(注意,这种行为在python3中是不同的,在python3中,您得到的是一个iterable而不是list)
zip()。它采用任意数量的iterables,并将每个迭代步骤合并为一个元组:
>>> 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循环来迭代它。对于这种压缩迭代器,您还可以创建一个dict
(也可以称为映射,因为它将项目映射到值):
但是,不能直接迭代DICT中的键值对:
>>> for key, value in d:
... print(key)
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
但我们指示python根据我们的价值观进行操作。所以它试图从一个int中得到两个值,这显然不起作用。从这个角度来看,这个错误似乎是合理的。因此,要迭代键值对,必须使用:
>>> for key, value in d.items():
... print(key, value)
...
1 5
2 6
3 7
4 8
(输出可能会有所不同,具体取决于您是否从\uuuuuuuuuuuuu
导入了打印功能)。对于大型dict和python2,iteritems()
将比items()
快,因为items()
将所有键值对放在列表的第一位,而iteritems()
只创建一个惰性迭代器。在python3上,items()
已经做了类似的事情
我希望这能澄清一下情况。你弄混了
map
对iterables进行操作,并接受两个参数,一个函数和一个iterable:
>>> def addOne(x):
... return x+1
...
>>> l = [1, 2, 3, 4]
>>> print(map(addOne, l))
[2, 3, 4, 5]
因此,它将作为第一个参数传递的函数应用于序列的每个元素,并以列表的形式返回新序列(注意,这种行为在python3中是不同的,在python3中,您得到的是一个iterable而不是list)
zip()。它采用任意数量的iterables,并将每个迭代步骤合并为一个元组:
>>> 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循环来迭代它。对于这种压缩迭代器,您还可以创建一个dict
(也可以称为映射,因为它将项目映射到值):
但是,不能直接迭代DICT中的键值对:
>>> for key, value in d:
... print(key)
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
但我们指示python根据我们的价值观进行操作。所以它试图从一个int中得到两个值,这显然不起作用。从这个角度来看,这个错误似乎是合理的。因此,要迭代键值对,必须使用:
>>> for key, value in d.items():
... print(key, value)
...
1 5
2 6
3 7
4 8
(输出可能会有所不同,具体取决于您是否从\uuuuuuuuuuuuu
导入了打印功能)。对于大型dict和python2,iteritems()
将比items()
快,因为items()
将所有键值对放在列表的第一位,而iteritems()
只创建一个惰性迭代器。在python3上,items()
已经做了类似的事情
我希望这能澄清一点情况。你想让它做什么,它现在做什么?你知道map()
应该做什么吗?也许我迟到了,但这里有一个关于地图和列表的简单教程:你想让它做什么,它现在做什么?你知道map()
应该做什么吗?也许我迟到了,但这里有一个关于地图和列表的简单教程:我接受你的答案,因为它确实解决了我的问题。谢谢你,伊格纳西奥。祝你今天愉快!!:-)(系统告诉我在7分钟内接受这个答案(不是现在),我不知道为什么。我会那么做。:-D)我会接受你的答案,因为它确实解决了我的问题。谢谢你,伊格纳西奥。祝你今天愉快!!:-)(系统告诉我在7分钟内(不是现在)接受这个,我不知道为什么。到时候我会做的。:-D)谢谢你,乔纳斯。我接受了你的回答。祝您有个美好的一天!谢谢你,乔纳斯。我接受了你的回答。祝您有个美好的一天!