-1

我已将雅虎数据导入列表列表,以便每个列表包含每天的所有数据。我想使用列表的第一个条目(日期条目)作为横坐标。我经历了很多例子,很多人使用我不熟悉的字典。我想到了这样的事情:

chart.plot(data[:][0], data[:][1])

会工作,但它没有。显然,data[:][0]只会给你第一个列表,而不是每个列表的第一个元素。我知道,我可以只列出所有日期的 2 个新列表,然后用 for 循环说股票价格,但这似乎是错误的。

4

3 回答 3

2

要获取n列表中每个列表的元素,您可以使用列表推导:

#nth_elements = [l[n] for l in data]
#for example:
x_list = [l[0] for l in data]
y_list = [l[1] for l in data]

现在您可以调用chart.plot(x_list, y_list).


如果您不喜欢“额外”变量,可以直接在函数调用中使用列表推导:

chart.plot([l[0] for l in data], [l[1] for l in data])

然而,一个简单的 for 循环在一个循环中执行相同的操作,因此无需在您的data列表上循环两次:

x_list = []
y_list = []
for l in data:
    x_list.append(l[0])
    y_list.append(l[1])

即使它不是pythonic,它也可以工作并且是原创的。它根本不应该感到“错误”。

于 2013-02-09T23:50:01.657 回答
0

data[:]只获取data列表中的所有元素。这与data[1:4]获取从 1 到 4: 的元素相同[1, 2, 3]

要为列表的每个元素做一些事情,你需要使用for循环。

list1, list2 = [], []
for list in data:
    list1.append(list[0])
    list2.append(list[1])
于 2013-02-10T09:58:08.093 回答
0

你对此感兴趣吗?:

li = [["GLD","SPDR Gold Trust",
       '161.57','161.47','162.02','161.20','0.00','N/A'],

      ["SLV","iShares Silver Trust",
       '30.29','30.65','25.34','36.44','0.00','N/A'],

      ["GDX","Market Vectors Gold Miners ETF",
       '42.31','42.77','39.08','57.91','0.00','N/A']]

from itertools import izip

for el in zip(*li):
    print el

显示

('GLD', 'SLV', 'GDX')
('SPDR Gold Trust', 'iShares Silver Trust', 'Market Vectors Gold Miners ETF')
('161.57', '30.29', '42.31')
('161.47', '30.65', '42.77')
('162.02', '25.34', '39.08')
('161.20', '36.44', '57.91')
('0.00', '0.00', '0.00')
('N/A', 'N/A', 'N/A')
于 2013-02-10T00:00:18.350 回答