我讀了一個動態變化的樹,其值以不均勻的嵌套列表的形式獲得。如何獲得python中不均勻嵌套列表的最後一個值
[u'All VMs & Templates', [[u'vSphere 5.5 (nested)', [[u'Datacenter', [[u'Discovered virtual machine', [u'vm1', 'vm2', 'vm3']]]]]]]
名單格局的變化對不同的樹,但在所有的情況下,我想最後一個值即VM3這裏,所以是有功能或方式來獲得嗎?
我讀了一個動態變化的樹,其值以不均勻的嵌套列表的形式獲得。如何獲得python中不均勻嵌套列表的最後一個值
[u'All VMs & Templates', [[u'vSphere 5.5 (nested)', [[u'Datacenter', [[u'Discovered virtual machine', [u'vm1', 'vm2', 'vm3']]]]]]]
名單格局的變化對不同的樹,但在所有的情況下,我想最後一個值即VM3這裏,所以是有功能或方式來獲得嗎?
您可以使用而循環以保持每個嵌套列表獲取最後的時間,直到達到一個非列表實例:
val = lst[-1]
while isinstance(val, list):
val = val[-1]
您可以使用如下遞歸函數:
In [61]: def get_last(lst):
last = lst[-1]
if isinstance(last, list):
return get_last(last)
return last
....:
In [62]:
In [62]: get_last(lst)
Out[62]: 'vm3'
但是作爲一種更爲Pythonic的方法,我建議如果你從其他地方讀取這些數據或者創建一個特殊類型,你可以爲你的對象添加一個特定的方法。像preserve_the_last()
。然後,您可以使用最大長度爲1的deque()
對象,該對象在每次迭代中接受輸入數據。在這種情況下,你會在最後拿出最新的產品。然後,您可以使用一個切片獲取最後一個項目。
@ Jean-FrançoisFabre無需 –
@ Jean-FrançoisFabre最後一次迭代已經做到了。 –
我的不好。我的代碼很相似,但需要最後一個階段。 –