#python #function #for-loop
Вопрос:
вероятно, мой вопрос очень прост, но моя проблема в том, что если я пишу цикл для внутри функции, результат не сохраняется, но если я делаю цикл для не в fction, поведение правильное. Где я не справляюсь с написанием своей функции? Спасибо вам за время, потраченное на меня
def infoClean(liste, database): for i in liste: database = database[~(database['Username'].str.contains(i, case = False, na = False))] infoClean(toRemove, twitter) twitter.info()
Это не работает, но если я напишу:
for i in toRemove: twitter = twitter[~(twitter['Username'].str.contains(i, case = False, na = False))] twitter.info()
Это работает. В этом случае первая база данных под названием twitter обновляется с циклом для. Где я проваливаюсь? Спасибо всем за терпение и поддержку
Комментарии:
1. возможно, вам придется использовать
return database
и запускатьtwitter = infoClean(toRemove, twitter)
Ответ №1:
Это проблема вызова по ссылке или вызова по значению.
Переменные, которые вы передаете функции, копируются, и изменения вносятся только в копию. Чтобы получить измененную версию, вам нужно вернуть ее из функции.
def infoClean(liste, database): for i in liste: database = database[~(database['Username'].str.contains(i, case = False, na = False))] return database twitter = infoClean(toRemove, twitter) twitter.info()
Комментарии:
1. Это не работает, и я не знаю, почему
2. спасибо @Eumel, вместо этого это работает. У меня возникла проблема с IDE pycharm. Большое вам спасибо!