Python3.5.2在地图对象上连接,太奇怪了

Python3.5.2在地图对象上连接,太奇怪了,python,dictionary,join,Python,Dictionary,Join,是否不应将连接用于贴图对象? 是否不应将联接用于由映射创建的列表 Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> a = map(lambda x:x[1], [('11', '22'), ('22',

是否不应将连接用于贴图对象? 是否不应将联接用于由映射创建的列表

Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> a = map(lambda x:x[1], [('11', '22'), ('22', '33'), ('33', '44')])
>>> list(a)
['22', '33', '44']
>>> '.'.join(a)
''
>>> ''.join(list(a))
''
>>> ''.join(['22', '33', '44'])
'223344'
>>> 
列表(a)
使用
map
对象中的项目。因此,当您随后再次尝试访问这些项目时(例如,使用
”。.join(a)
映射
对象为空。这就是
join
返回空字符串的原因

您可以在
映射上调用
join()

>>> a = map(lambda x:x[1], [('11', '22'), ('22', '33'), ('33', '44')])
>>> '.'.join(a)
'22.33.44'
>>> '.'.join(a)
''
但是一旦它被使用,就这样了,所以第二个
join()
就不能像您预期的那样工作了

您可以将
列表(a)
的结果绑定到一个变量,然后在以后再次使用该变量:

>>> a = map(lambda x:x[1], [('11', '22'), ('22', '33'), ('33', '44')])
>>> l = list(a)
['22', '33', '44']
>>> '.'.join(l)
'22.33.44'