Как проверить, содержит ли список список списков внутри? - PullRequest
0 голосов
/ 03 июня 2019

Я хочу знать, как я могу проверить в кратчайшие сроки, если список содержит списки внутри. Мне не нужно проверять значение, просто тип списка. Я хочу знать, являются ли объекты в списке списками или нет. Только это.

Спасибо!

Ответы [ 4 ]

4 голосов
/ 03 июня 2019

Используйте isinstance(x, list), чтобы увидеть, является ли x экземпляром list.

Если вы хотите убедиться, что все элементы в вашем списке (назовем его my_list) являются списками, используйте all():

all(isinstance(x, list) for x in my_list)

Если вы просто хотите знать, есть ли какие-либо списки внутри my_list, используйте any():

any(isinstance(x, list) for x in my_list)

Они оба возвращают логическое значение (True / False), поэтому вы можете сохранить его в переменной или использовать в предложении if или в любом другом виде:

if any(isinstance(x, list) for x in my_list):
    print('At least one list!')
else:
    print('No lists in my_list')
0 голосов
/ 03 июня 2019

Чтобы проверить, является ли любой элементов списком, вы можете сделать:

if list in map(type, my_list):
    # there is a list in `my_list`

Чтобы проверить, являются ли все элементы списками, вы можете сделать:

if {list} == set(map(type, my_list)):
    # all items are lists

Вы можете быть более точным с:

def is_list(x):
    return type(x) == list

А потом:

if any(map(is_list, my_list)):
    # some items are lists

Или:

if all(map(is_list, my_list)):
    # all items are lists

Обязательно добавьте свою обработку для пустого списка.

0 голосов
/ 03 июня 2019

вы можете проверить это методом isinstance:

например, если у вас есть словарь temp = {}

Вы можете проверить это с помощью

 print(isinstance(temp, dict)) # it ll return True if temp is a dictionary.

то же самое для списка и строк и т.д ...

0 голосов
/ 03 июня 2019

Список может быть смешанного типа, но вы можете найти тип любого индекса в списке, используя метод type

x = [1, 2, 'three', [4, 5, 6]] # This list contains int, int, str, list
for i in x:
    print(type(i))

Возвращает

<class 'int'>
<class 'int'>
<class 'str'>
<class 'list'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...