当同时使用多个索引时,列表索引超出范围

时间:2015-03-11 18:13:34

标签: python list python-3.x

我试图获得随机数的更新图,就像学习练习一样(我可以传递实际数据)。

我编写了以下代码,希望最终得到一个元组列表(时间和随机数),然后我可以将其拆分并作为轴传递给maplotlib。

def local_db_monitor(increment=10):
    import datetime
    import time
    import random
    import matplotlib
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    import pylab as pl

    time_list = []

    while True:
        now = datetime.datetime.utcnow().strftime('%H:%M:%S')
        rand_number = random.randint(1,100)

        time_rand = (now, rand_number)

        if len(time_list) >= increment:
            time_list.pop(0)
            time_list.append(time_rand)
        else:
            time_list.append(time_rand)

        items = zip(*time_list)

        x_val = list(items)[0]
        y_val = list(items)[1]

        print(x_val, y_val)

        # plt.plot(x_val, y_val)

        time.sleep(0.5) 

local_db_monitor()

我遇到的问题是分离元组列表。我只能得到日期,或只是随机数,但两个索引似乎都不能同时使用。

<ipython-input-119-e33785849b16> in local_db_monitor(increment)
     39 
     40         x_val = list(items)[0]
---> 41         y_val = list(items)[1]
     42 
     43         print(x_val)
IndexError: list index out of range

有人可以帮我理解这里发生了什么。我正在使用iPython / Python 3。

1 个答案:

答案 0 :(得分:0)

您正在尝试索引zip对象,在python 3 zip中返回一个迭代器,如果要对其进行索引,则需要调用项目列表:

items = list(zip(*time_list))

或使用next(items)

items = zip(*time_list)
x_val, y_val = next(items),next(items)