我已将yahoo数据导入列表列表,以便每个列表包含每天的所有数据。我想使用列表的第一个条目(日期条目)作为横坐标。我经历了很多例子,很多都使用了我不熟悉的词典。我想到这样的事情:
chart.plot(data[:][0], data[:][1])
会起作用,但事实并非如此。显然,data[:][0]
只会为您提供第一个列表,而不是每个列表的第一个元素。我知道,我可以制作所有日期的2个新列表,并用for循环说出股票价格,但这似乎不对。
答案 0 :(得分: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)
。
如果您不喜欢“额外”变量,可以直接在函数调用中使用list comprehension:
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,它也有效并且是原创的。它根本不应该感到“错误”。
答案 1 :(得分: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')
答案 2 :(得分:0)
data[:]
只会在列表中获取data
的所有元素。这与执行从{1}到结尾为4的元素的data[1:4]
相同:[1, 2, 3]
。
要为列表中的每个元素执行操作,您需要使用for
循环。
list1, list2 = [], []
for list in data:
list1.append(list[0])
list2.append(list[1])