我希望能够知道我的列表何时收到另一个值,以便我能够自动处理该值。那可能吗?如果是这样,怎么样?
例如:
我有一个Entry小部件状态为“readonly”,当一个新值添加到my_list时,我想将状态转为“normal”并插入更新后的显示然后将状态设置回“readonly”< / p>
my_list = [3, "+", 4]
display = display = " ".join(str(item) for item in entry_list)
答案 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可编辑。