python применить функцию после проверки, является ли переменная одним списком или списком списков - PullRequest
0 голосов
/ 29 мая 2020

Я собираюсь применить функцию к переменной. Я заранее не знаю, будет ли входящая переменная списком или отдельным списком. например,

var_name = [a, b, c]
or
var_name = [[a,b,c], [d,e,f], [h,i,j]]

Список списка может содержать как можно больше списков. Как мне go проверить, является ли переменная списком или списком списков. Я намерен применить функцию в зависимости от типа. Я попытался использовать len (var_name), но длина для списка будет количеством элементов в одном списке, а для списка списков это количество списков в списке списков.

то, что я пытаюсь для достижения этого:

#function for list
def apply_val(lst):
    do something with single list
#function for list of list
def apply_val2(lst):
    do something with list of lists

var_name = single_list or list_of_lists
if var_name == single list
    apply_val(single_list)
else:
    apply_val(list_of_lists)

Как мне проверить, является ли var_name списком или списком списков?

Ответы [ 3 ]

2 голосов
/ 29 мая 2020

list of lists ничего не означает, что такое [["foo", "bar"], "baz"]?

Однако, если вы уверены, что у вас могут быть только «список того, что не является списком» и «список списка», просто:

  • Проверить, что список не пуст
  • Затем проверить тип первого элемента
if len(my_list) > 0:
  if isinstance(my_list[0], list):
    # List of list
    pass
  else:
    # Simple list
    pass
1 голос
/ 29 мая 2020

если единый список всегда состоит только из значений И список списков всегда содержит ТОЛЬКО списки, вы можете проверить, является ли он одним списком или списком списков, например:

list1 = [1,2,3]
list2 = [[1,2,3],[1,2,3]]

if type(list2[0]) == list:
    print('list of lists')
else:
    print('single list')

возвращает 'list of lists' для list2 и 'single list' для list1

, если есть смесь, вы можете сделать что-то вроде:

list3 = [1,[1,2,3], 4.343, 'string']
types = set([type(element) for element in list3])
if list in types and len(types) > 1:
    print('mixed')
0 голосов
/ 29 мая 2020

Попробуйте это

def check_list(test_list):
    if type(test_list[0]) == list:
        return True
    else:
        return False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...