2013-03-10 141 views
0

列表的第一個元素我有這樣的目錄列表選擇列表

[[('C', '0', 8.625), ('A', '0', 4.5)], [('B', '0', 15.3125), ('D', '2', 6.0625)], 
[('C', '1', 8.1875), ('D', '2', 6.0625)], [('G', '2', 11.0625), ('D', '2', 6.0625)], 
[('G', '2', 10.1875), ('C', '1', 8.1875)]] 

如何檢查是否('C', '0', 8.625)在列表與否(如果可能的話不使用循環)?

+0

該元組可以在任何地方...我只是想知道,如果它是在列表中還是不是 – 2013-03-10 06:32:25

+0

「* anywhere *」是什麼意思?請詳細說明'('C','0',8.625)'可以在哪裏......不太清楚 – pradyunsg 2013-03-10 06:36:34

+0

如何知道'('x','y',z)'是否在列表中? – 2013-03-10 06:38:22

回答

3

您可以通過@Schoolboy的建議可以通過一個隱含的循環執行在所有名單成員操作或使用itertools.chain

>>> some_list = [[('C', '0', 8.625), ('A', '0', 4.5)], [('B', '0', 15.3125), ('D', '2', 6.0625)], 
[('C', '1', 8.1875), ('D', '2', 6.0625)], [('G', '2', 11.0625), ('D', '2', 6.0625)], 
[('G', '2', 10.1875), ('C', '1', 8.1875)]] 
>>> from itertools import chain 
>>> ('C', '0', 8.625) in chain(*some_list) 
True 
+0

'chain.from_iterable(some_list)'哪個更好 – JBernardo 2013-03-10 07:01:31

3

假設你的列表中有3 「水平」,試試這個:

any(('C', '0', 8.625) in li for li in c) 

其中c是您的清單。