为什么用地图对象更新集合会破坏地图对象?

时间:2018-11-23 21:52:05

标签: python python-3.x set

以下代码如下所示:

0

输出:

  

A

     

B

     

C

     

D

     

{1}

期望。但是,当我使用y=set() y.update([1]) x=map(chr, [65, 66, 67, 68]) for ch in x: print(ch) print(y) 地图对象更新y集时,它会破坏地图对象。此处显示为以下代码:

x

输出:

  

{'C',1,'D','A','B'}

当我的预期输出是这样时:

  

A

     

B

     

C

     

D

     

{'C',1,'D','A','B'}

变量x不再存在并销毁了?

有人可以解释一下吗?

以及更新y=set() y.update([1]) x=map(chr, [65, 66, 67, 68]) y.update(x) for ch in x: print(ch) print(y) 集后如何保留x地图对象?

1 个答案:

答案 0 :(得分:3)

在Python 2中,map将返回一个列表。在Python 3中,它返回一种特殊的对象,该对象只能被迭代一次。

如果要多次迭代,可以将其转换为列表。

x = list(map(chr, [65, 66, 67, 68]))