如何检查列表是否已收到其他值?

时间:2015-07-05 03:05:13

标签: python list

我希望能够知道我的列表何时收到另一个值,以便我能够自动处理该值。那可能吗?如果是这样,怎么样?

例如:

我有一个Entry小部件状态为“readonly”,当一个新值添加到my_list时,我想将状态转为“normal”并插入更新后的显示然后将状态设置回“readonly”< / p>

my_list = [3, "+", 4]
display = display = " ".join(str(item) for item in entry_list)

4 个答案:

答案 0 :(得分:0)

你需要跟踪某些事情。它通常只是跟踪阵列的长度。

这样的事情:

oldLength=len(myList) 

...     如果len(myList)&gt; oldLength:         检查新项目

当然,如果您在任何地方添加新商品(那么您需要跟踪已添加的商品),或者是否添加了商品,这将无法运作并减去。

一个工作示例会有所帮助,因为可能有其他结构更适合您尝试做的事情。

答案 1 :(得分:0)

如果您想确保某个值未被删除,而另一个值在检查之间插入,则可以使用内置hash()功能并结合tuple()

但是,在这种情况下,在list更改时将raspivid -t 999999 -w 1080 -h 720 -fps 25 -hf -b 2000000 -o - | \gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 \! gdppay ! tcpserversink host=serverIp port=5000 子类化为回调可能是最有意义的。

答案 2 :(得分:0)

你可以继承list,当它发生变化时,覆盖它的一些方法做东西。 -Python 2.7.x

class Foolist(list):
    def insert(self, idx, thing):
        super(Foolist, self).insert(idx, thing)
        print('{} inserted at [{}]'.format(thing, idx))
    def append(self, thing):
        super(Foolist, self).append(thing)
        print('{} appended'.format(thing))
    def extend(self, iterable):
        super(Foolist, self).extend(iterable)
        print('{} extended'.format(list(iterable)))
    def __setitem__(self, idx, thing):
        super(Foolist, self).__setitem__(idx, thing)
        print('item[{}] set to {}'.format(idx, thing))
    def __setslice__(self, start, stop, items):
        super(Foolist, self).__setitem__(slice(start, stop), items)
        print('slice({}, {}) set to {}'.format(start, stop, items))

用法:

>>> a = Foolist(xrange(4))
>>> a.extend([4,4,4])
[4, 4, 4] extended
>>> a
[0, 1, 2, 3, 4, 4, 4]
>>> a.append(2)
2 appended
>>> a
[0, 1, 2, 3, 4, 4, 4, 2]
>>> a.insert(-1, 'a')
a inserted at [-1]
>>> a
[0, 1, 2, 3, 4, 4, 4, 'a', 2]
>>> a[-1] = 't'
item[-1] set to t
>>> a
[0, 1, 2, 3, 4, 4, 4, 'a', 't']
>>> a[1:4] = ['z','z','z']
slice(1, 4) set to ['z', 'z', 'z']
>>> a
[0, 'z', 'z', 'z', 4, 4, 4, 'a', 't']
>>>

您可以使用函数或日志记录或通知代替print语句...

答案 3 :(得分:-1)

我同意hypgeum关于列表长度的一部分,但是在编辑你的liat并添加之后不要忘记在oldLength中添加一个。因为现在oldLength是你列表的当前长度,下次你将需要它。想要使lise可编辑。