Python中嵌套列表的算术运算

2024-04-26 05:21:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一个嵌套列表(雅虎财经的历史股价数据列表)中减去值,但我遇到了一些问题。我正在尝试简单的减法(即高-低),但我无法实现这一点。我可能遗漏了列表本质上的一些基本内容,但我被难住了。在

我使用的嵌套列表示例:

[['2012-07-31', '16.00', '16.06', '15.81', '15.84', '13753800', '15.8'],
 ['2012-07-30', '16.15', '16.15', '15.90', '15.98', '10187600', '15.9'],
 ['2012-07-27', '15.88', '16.17', '15.84', '16.11', '14220800', '16.1'],
 ['2012-07-26', '15.69', '15.88', '15.62', '15.80', '11033300', '15.8'],
 ['2012-07-25', '15.52', '15.64', '15.40', '15.50', '15092000', '15.5'],
 ['2012-07-24', '15.74', '15.76', '15.23', '15.43', '19733400', '15.4'],
 ['2012-07-23', '15.70', '15.81', '15.59', '15.76', '14825800', '15.7'],
 ['2012-07-20', '15.75', '15.94', '15.68', '15.92', '16919700', '15.9'],
 ['2012-07-19', '15.71', '15.86', '15.64', '15.73', '15985300', '15.7'],
 ...]

我想从第三个column中减去第四个column,然后用结果填充另一个列表(顺序很重要)。实现这一点的最佳方法是什么?在


Tags: 数据方法示例内容列表顺序column历史
3条回答

您可以使用列表理解:

from decimal import Decimal
result = [(row[0], Decimal(row[2]) - Decimal(row[3])) for row in data]

在原生Python中,如果您想保持嵌套列表(称之为“table”;其中的每个列表都是“row”)不变,那么创建差异列表的简洁惯用方法是:

differences = [float(row[3]) - float(row[4]) for row in table]

所以differences[i] == table[i][3] - table[i][4]。在

如果表中的数字数据将被其他代码使用,则可能需要将字符串转换为表中的浮点:

^{pr2}$

因此差异表将由

differences = [r[3] - r[4] for r in table]

你的第一个问题是你的列表包含字符串而不是数字。如果要减去数字,则需要将其转换为数字(例如,在创建列表时使用float)。在

您似乎希望按组件方式对数字进行加减,将数据视为一个包含行和列的表。为此,您应该使用^{},这是一个为此而设计的库。您可能还想看看pandas,这是一个构建在numpy之上的库,它为按行和列对数据进行切片和分片提供了强大的功能。(如果您碰巧从文件中读取数据,这些库还提供了一些工具,允许您读取,例如CSV文件,并将数据作为数字和/或日期而不是字符串导入。)

相关问题 更多 >