-1

各リストに毎日のすべてのデータが含まれるように、yahoo データをリストのリストにインポートしました。リストの最初のエントリ(日付エントリ)を横座標に使用したい。私は多くの例を見てきましたが、多くは私が慣れていない辞書を使用しています。私はこのようなものを考え出した:

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

動作しますが、動作しません。どうやら、data[:][0]すべてのリストの最初の要素ではなく、最初のリストを提供するだけです。私は、すべての日付の 2 つの新しいリストを作成し、for ループで株価を言うことができることを知っていますが、それは間違っているようです。

4

3 に答える 3

2

list 内のすべてのリストの th 要素を取得するに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 ループは 1 つのループで同じことを行うため、dataリストを 2 回ループする必要はありません。

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 に答える