python - 包含 2 个元素和一个 zip 的循环

标签 python loops

一位 friend 给我发了一个 Jupyter 笔记本,其中包含以下代码:

for stock_df, allo in zip((aapl, cisco, ibm, amzn), [.3,.2,.4,.1]):
    stock_df['Allocation'] = stock_df['NormedReturn']*allo

我理解输出,因为它在每个数据帧“aapl”、“cisco”中创建一个新列“分配”...并将权重应用于规范返回。但是,我对语法的理解还不够,我可以自己再做一遍。

这个 for 循环在 2 个元素和 zip 上如何工作? (我认为压缩时元素的长度必须相似,否则输出数据将被截断)。

最佳答案

这里 Python 语法的关键位是 zip()功能。

从文档中,我们可以看到:

Returns an iterator of tuples, where the i-th tuple contains the i-th element from each of the argument sequences or iterables.

因此它传递了可迭代对象并将它们“压缩”在一起。通过一个例子可能会更容易理解:

>>> a = [1, 2, 3, 4]
>>> b = [9, 8, 7, 6]
>>> list(zip(a, b))
[(1, 9), (2, 8), (3, 7), (4, 6)]
<小时/>

因此,在您的代码中,这与称为“元组解包”的方法一起使用,该方法只是执行以下操作:

>>> i, j = 5, 6
>>> i
5
>>> j
6

这允许干净的代码迭代从 zip() 返回的元组。如果您仍然不确定循环在做什么,我们可以修改它以print变量(为简单起见,我还将传递到zip的变量转换为字符串):

for stock_df, allo in zip(('aapl', 'cisco', 'ibm', 'amzn'), [.3,.2,.4,.1]):
    print(stock_df, allo)

您可以从输出中看到我们所期望的结果:

aapl 0.3
cisco 0.2
ibm 0.4
amzn 0.1

我希望这可以帮助您清除代码,从您提出问题的方式看来,您已经知道这些变量实际上是如何在循环中处理的,所以我不会详细介绍。

关于python - 包含 2 个元素和一个 zip 的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47963519/

相关文章:

Python 绘图簇 : high data dimension

javascript - Javascript 数组中没有数组

在 R 循环中重新编码变量

php - 使用 PHP 进行 MySQL 多用户多表查询

javascript - 如何在ReactJS中迭代数据并在JSX中显示它们?

python - 如何仅使用递归在 python 中制作列表搜索程序?

python - Flask-WTForms 测试(使用 py.test)

python - 在 Mountain Lion OS X 上安装 Python igraph 时出现问题

python - turtle Python中penup()和up()的区别?

循环内的 JavaScript 闭包 – 简单的实际示例