社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

raek

raek 最近创建的主题
raek 最近回复了
11 年前
回复了 raek 创建的主题 » 何时在python中使用map()[重复]

事实上, map 在python 3语言中,列表理解的行为非常不同。请看下面的Python3程序:

def square(x):
    return x*x
squares = map(square, [1, 2, 3])
print(list(squares))
print(list(squares))

您可能希望它打印行“[1,4,9]”两次,但它会打印“[1,4,9]”和“[]。你第一次看到 squares 它看起来是由三个元素组成的序列,但第二次是空的。

在python 2语言中 地图 返回一个普通的旧列表,就像两种语言中的列表理解一样。关键在于 地图 在python 3中(和 imap 在Python2)中不是列表-它是迭代器!

元素在迭代器上迭代时使用,这与在列表上迭代时不同。这就是为什么 正方形 最后一次看起来是空的 print(list(squares)) 线。

总结一下:

  • 在处理迭代器时,必须记住它们是有状态的,并且在遍历它们时会发生变化。
  • 列表是更可预测的,因为它们只有在您显式地对它们进行变异时才会更改;它们是 容器 .
  • 还有一个好处:数字、字符串和元组更容易预测,因为它们根本无法更改;它们是 价值观 .