python - 在列表理解中进行分配
问题描述
如何将此代码移动到列表理解
prev = 0
data = [1, 20, 40, 50, 100]
newlist = []
for x in data:
value = x - prev
prev = x
newlist.append(value)
解决方案
不要使用prev
变量,只需创建一个以 0 开头的新列表。
[x-prev for prev, x in zip([0]+data, data)]
不过,您可能不应该将其用于大容量data
,因为它会生成一个全新的副本。您可以使用 itertools.chain 来加快速度:
[x - prev for prev, x in zip(chain([0], data), data)]
推荐阅读
- google-chrome-extension - Uipath Chrome“这种类型的文件可能会损害您的计算机。您要保留 [文件名] 吗?”
- java - 与 Java 无符号右位移运算符等效的 C# 问题
- node.js - 为什么有些模块创建需要我们包含 () 而有些则不需要在节点 js 中?
- python - 在 Amazon Sagemaker studio 上从源代码安装包
- docusignapi - DocuSign API:创建信封时出错,“Notary not enabled. Notary Tab is not support for this account
- html - 我怎样才能让盒子阴影在我的导航栏上工作?
- r - R中函数的所有可能参数规范
- activemq-artemis - ActiveMQ Artemis 的 TopicControl listAllSubscriptions 方法的新功能
- r - 在不同的数据帧中提取具有相同值的行
- java - 如何从我的应用程序的页面中选择一个选项并且再也看不到该页面?