使用列表推导我创建了一个包含10个不同可观察量的列表。然而,尽管他们的时间不同,他们总是打印相同的东西(" ticker_9")。
from __future__ import print_function
from rx import Observable
import IPython
n_tickers = 10
tickers = ["ticker_" + str(x) for x in range(n_tickers)]
olist = [Observable.interval(x * 100 + 10).map(lambda _: tickers[x]) for x in range(n_tickers)]
IPython.embed()
所以这样做首先是创建一个包含10个代码的列表,名为ticker_0到ticker_9。然后,它使用列表推导来创建10个可观察量,这些可观察量以100毫秒(加10)的倍数增加。每个可观察者(应该)发出不同的自动收报机。但是它们都发出ticker_9(即列表中的最后一个自动收录器),即使列表解析中的x变量被识别,因为它们以不同的频率发射。
这里发生了什么?为什么我没有获得olist [0]的ticker_0,olist [1]等的ticker_1?
观察:
In [1]: olist[0].subscribe(lambda s: print(s))
Out[1]: <rx.disposables.anonymousdisposable.AnonymousDisposable at 0xb60eaf30>
ticker_9
In [2]: ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
或者:
In [1]: olist[5].subscribe(lambda s: print(s))
Out[1]: <rx.disposables.anonymousdisposable.AnonymousDisposable at 0xb60c0f30>
In [2]: ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
ticker_9
......同样的事情即。 ticker_9整个时间。应该是ticker_0和ticker_5,即使在第二种情况下,排放 的速度要慢得多。
为什么我的列表理解不能为每个observable创建不同的ticker_x,即使 在该时间间隔内工作?