如何檢查列表是否包含其他列表? 我需要它,以便如何查看列表是否包含Python中的另一個列表?
[['cow'], 12, 3, [[4]]]
輸出True
,而像
['cow', 12, 3, 4]
將輸出False
。
如何檢查列表是否包含其他列表? 我需要它,以便如何查看列表是否包含Python中的另一個列表?
[['cow'], 12, 3, [[4]]]
輸出True
,而像
['cow', 12, 3, 4]
將輸出False
。
下面是使用列表理解的整潔解決方案。
鑑於obj = [['cow'], 12, 3, [[4]]]
,我們將首先使用列表中理解到獲得obj
類型的列表:現在
>>> [type(x) for x in obj]
[<type 'list'>, <type 'int'>, <type 'int'>, <type 'list'>]
,我們簡單地檢查list
是在我們創建的類型列表。讓我們重溫我們的列表理解並將其變成布爾表達式:
>>> list in [type(x) for x in obj]
在那裏,這很好,很短。它是如何工作的?只要條件True
def any_list_in(obj):
return any(isinstance(item, list) for item in obj)
any
停止所以這個只需要檢查的必要只盡可能多的項目:
>>> obj = [['cow'], 12, 3, [[4]]]
>>> list in [type(x) for x in obj]
True
>>> obj = ['cow', 12, 3, 4]
>>> list in [type(x) for x in obj]
False
不要調用列表'input'和'type(list())'literally *是*'列表'。 – Wombatz
@Wombatz感謝'type(list())'冗餘的指針,我更新了我的答案。在代碼示例中使用'input'有什麼問題? – daveruinseverything
這是一個[內置函數](https://docs.python.org/3/library/functions.html)python2和python3 – Wombatz
如果你也想找到列出的子類,那麼你應該使用isinstance
。
>>> any_list_in([['cow'], 12, 3, [[4]]])
True
>>> any_list_in(['cow', 12, 3, 4])
False
的isinstance(item, list) for item in obj
是generator expression的作品類似for
-loop或列表理解。它也可能是(長,速度較慢,但也許這是更好地理解)寫爲:
def any_list_in(obj):
for item in obj:
if isinstance(item, list):
return True
return False
您可以使用此方法,如果您的列表中不包含某些字符串「[」詮釋它。
def check(a):
a=str(a)
if a.count('[')==1: # or a.count(']')==1;
return False
return True
在Python 2.7版,我們有一個模塊,這項工作:(我不知道在Python 3.x的任何這樣的模塊)
from compiler.ast import flatten
def check(a):
if flatten(a)==a:
return False
return True
'[ '牛' 在lst'是所有你需要的 –
你需要檢查特定的內部列表,或檢查是否有任何內部列表? – Blckknght
http://stackoverflow.com/questions/2225038/determine-the-type-of-a-python-object –