Python:使用函数替换循环

时间:2018-08-28 11:38:36

标签: python pandas function loops for-loop

任何人都可以帮助我了解如何使用def whatever()创建函数而不是使用for循环。我正在尝试以Python的方式做更多的事情,但并不太了解如何很好地应用函数而不是循环。例如,我下面有一个循环,可以很好地运行并给出我想要的输出,是否可以通过函数来​​实现?

seasons = leaguesFinal['season'].unique()
teams = teamsDF['team_long_name'].unique()
df = []

for i in seasons:
    season = leaguesFinal['season'] == i
    season = leaguesFinal[season]
    for j in teams:
        team_season_wins = season['win'] == j
        team_season_win_record = team_season_wins[team_season_wins].count()
        team_season_loss = season['loss'] == j
        team_season_loss_record = team_season_loss[team_season_loss].count()
        df.append((j, i, team_season_win_record, team_season_loss_record))
df = pd.DataFrame(df, columns=('Team', 'Seasons', 'Wins', 'Losses'))

输出如下:

      Team               Seasons    Wins    Losses
0   KRC Genk            2008/2009   15       14
1   Beerschot AC        2008/2009   11       14
2   SV Zulte-Waregem    2008/2009   16       11
3   Sporting Lokeren    2008/2009   13        9
4   KSV Cercle Brugge   2008/2009   14       15

2 个答案:

答案 0 :(得分:0)

实际上,您混在一起了-functions仅聚合代码行,从而使它们可重现,而无需再次编写所有内容,而for-loops仅用于迭代目的。

在上述示例中,一个函数将只包含for-loop并返回结果数据帧,然后可以使用该数据帧。但它不会改变任何内容或使您的代码更智能。

答案 1 :(得分:0)

解决方案

def some_loop(something, something_else):
    for i in something:
        season = leaguesFinal['sesaon'] == i
        season = leaguesFinal[season]
        for j in something_else:
            team_season_wins = season['win'] == j
            team_season_win_record = team_season_wins[team_season_wins].count()
            team_season_loss = season['loss'] == j
            team_season_loss_record = team_season_loss[team_season_loss].count()
            df.append((j, i, team_season_win_record, team_season_loss_record))

some_loop(seasons, teams)

评论

这就是您要提到的,尽管您在函数中仍然有一个for循环,但仍可以在for循环之外创建一个函数,您可以在代码的不同区域使用它,而无需重新执行-使用整个代码进行循环。

所有要做的就是定义一个函数,该函数接受def some_loop(something, something_else)这个特定循环的两个变量,我使用了基本的命名方式,因此您可以清楚地了解发生了什么。

然后,您将用这些变量替换seasonsteams的所有实例。

现在,您调用函数会将somethingsomething_else的所有出现替换为发送给它的任何输入。

我也不完全确定涉及x = y = i的语句及其作用是什么,或者甚至是有效的语句?