あなたの問題が解決したら、テール再帰は一般的に有用な手法であるため、一般的にループとテール再帰の概念を説明します。
Python でのループとリスト内包表記は、末尾再帰が必要になる可能性が低いことを意味しますが、その考えを持っていることは良いことです。
関数を再帰的に呼び出す手法は、末尾再帰と呼ばれます。末尾再帰とループを使用して同じことを実現できますが、両方は必要ありません。
あなたが望むことをするために、ループを使うことができます:
def ifeveryitems(lst):
    for items in lst:
        if not isinstance(items,list) or len(items) > 2:
            return False
    return True
または末尾再帰:
def ifeveryitems(lst):
    if isinstance(items,list) and len(lst)==0:
        return True
    return isinstance(lst[0],list) and len(lst[0]) <= 2 and ifeveryitems(lst[1:])
この関数は、 の最初の項目がlstリストであり、長さが 2 以下であるかどうかをチェックlst[1:]し、関数自体を使用してリスト ( ) の残りをチェックします。最終的には、ショートカットによって False を返す (isinstance(lst[0],list) and len(lst[0]) <= 2が False の場合) か、リスト全体が使い尽くされて True を返す場合の基本ケースに到達します。
len(L)もう 1 つの例:自分で実装する場合。常にリストである
と仮定すると、ループを使用して実装できます。Llen
def len(L):
    i = 0
    for item in L:
        i += 1
    return i
(注: このようなループを使用することは累積とも呼ばれます)
または末尾再帰。
def len(L):
    if L==[]:
        return 0
    return 1 + len(l[1:])
リストの最初の項目を削除し、リストの残りの長さに 1 を追加します。最終的には、L が使い果たされて空のリストになるポイントに到達し、その場合は 0 を返すだけです。