найти путь с рекурсивной функцией с python - PullRequest
0 голосов
/ 06 августа 2020

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

То, что у меня есть:

early_adopter = ['2347507100',
                  '1353186810',
                  '897960223662424064']

#distances between early adopters
def get_distance(usr1, usr2):
  follower_list=[]
  path = 0
  for user in tweepy.Cursor(api.followers, user_id = usr1).items(4):
      follower_list.append(user.id)
  if usr2 in follower_list:
    path =+ 1
    return path
  elif usr2 not in follower_list: 
    #repeat the same step above but this time with the user of the follower list, and this will count another step in the path, I want to repeat this process 3 times.
  else:
    return 0


dist = [get_distance(early_adopter[i], early_adopter[i+1]) for i in range(len(early_adopter)-1)]
dist

1 Ответ

0 голосов
/ 06 августа 2020

Прежде всего вы написали иногда user2, а иногда usr2;

Затем у вас есть

  1. to l oop для элементов follower_list
  2. для увеличения, только если вы нашли совпадение
  3. для ограничения глубины 3.

Вот идея того, что вы могли бы сделать:

def get_distance(usr1, usr2):
    get_distance_with_depth(usr1, usr2, 0)
    
def get_distance_with_depth(usr1, usr2, depth): // inseert depth in reccursion
    if depth==3:
        return 0
    follower_list=[]
    path = 0
    for user in tweepy.Cursor(api.followers, user_id = usr1).items(4):
      follower_list.append(user.id)
    if usr2 in follower_list:
        path =+ 1
        return path
    else: //usr2 not in follower_list
        for subuser in follower_list: // loop on subusers
            distance = get_distance_with_depth(subuser, usr2, depth+1)
            if distance != 0: // found a match
                return distance+1 // add +1 only if you find a match
            // if not found, go on looping
        // if reaching here, no match was found
        return 0


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