>source

중첩된 목록 유형 구조가 주어지면 전체 목록에 여러 항목이 필요합니다. 예를 들어:

a= [[2, [1, 2]], [[1, 2], [1, 2]]]
# approach 1
def fun(items):
  vars= 0
  num= 0
  for item in items:
    print(item, item.__class__)
    if item.__class__== list:
      num= fun(item)
    else:
      vars += 1
  return vars + num
# approach 2
str(a).count(",") + 1  # this works but not the approach I am looking for

그래서 목록에서전체 목록에서 7개의 항목을 얻을 것으로 예상하지만 접근 방식 1에서 작성한 방법에서 2개만 얻는 것을 봅니다. 무엇이 잘못되었습니까?

num= fun(item)은 아마도 vars += fun(item)이어야 합니다.

luk23022022-02-02 22:39:00

if item.__class__== list는 item이 목록인지 확인하는 올바른 방법이 아닙니다. 대신 isinstance()를 사용하십시오.

Pranav Hosangadi2022-02-02 22:39:08
  • 답변 # 1

    매번 num 값을 할당하고 있습니다. 이 줄을 다음과 같이 변경합니다.

    num += fun(item)
    

  • 답변 # 2

    필요하지 않습니다숫자; 재귀 호출의 결과를 추가할 수 있습니다.var:

    def fun(items):
      vars= 0
      for item in items:
        if isinstance(item, list):
          vars += fun(item)
        else:
          vars += 1
      return vars
    a= [[2, [1, 2]], [[1, 2], [1, 2]]]
    print(fun(a)) # 7
    

  • 이전 python : 아래 웹사이트에서 모든 영화 제목, 날짜 및 리뷰를 스크랩하려면 어떻게 해야 합니까? https://www.nollywoodreinvented.com/list-of-all-reviews
  • 다음 sql : 특정 문자열과 동일한 열의 모든 행을 어떻게 설정합니까?