【问题标题】:Calling Python variables within a for loop在 for 循环中调用 Python 变量
【发布时间】:2018-08-23 19:44:58
【问题描述】:

假设我有三个列表,存储在文件 sports.py 中,与我正在使用的 .py 文件分开:

games_1 = ["Tennis", …]
games_2 = ["Cricket", …] 
games_3 = ["Golf", …] 

我还有一个变量var_game == "Football"

我想检查var_game 出现在哪些列表中。 到目前为止,我已经尝试过:

for N in range(1,3):
    if var_game in sports.games_N:
        gamesN_check = 1
    else:
        gamesN_check = 0

但是,Python 不允许我以这种方式使用 N 循环遍历列表。我如何需要以正确的语法使用它?

提前非常感谢!

【问题讨论】:

  • 使用dictionary

标签: python loops for-loop if-statement


【解决方案1】:

我建议将您的列表打包在字典中,并按以下方式进行评估:

games_1 = ['Tennis', 'Football', 'Basketball']
games_2 = ['Cricket', 'Football', 'Lacrosse'] 
games_3 = ['Golf','Baseball', 'Rugby', 'Track'] 

games_N = {'games_1': games_1, 'games_2': games_2, 'games_3': games_3}

var_game = 'Football'

games_N_check = {key: 1 if var_game in val else 0 for key, val in games_N.items()}

输出:

{'games_1': 1, 'games_2': 1, 'games_3': 0}

另外

一种从一系列列表创建字典的快速方法,这样您就不必明确命名每个列表:

games_lists = [['Tennis', 'Football', 'Basketball'],['Cricket', 'Football', 'Lacrosse'],['Golf','Baseball', 'Rugby', 'Track']]

games_N = {'games_{}'.format(idx+1): game_list for idx, game_list in enumerate(games_lists)}

给予:

{'games_1': ['Tennis', 'Football', 'Basketball'], 'games_2': ['Cricket', 'Football', 'Lacrosse'], 'games_3': ['Golf', 'Baseball', 'Rugby', 'Track']}

【讨论】:

  • 这对我来说效果很好,并且允许扩展到超过 3 个列表,我以后需要。我不知道 Python 中的字典函数(是的,我对它真的很陌生)。谢谢!
【解决方案2】:

不要为游戏使用 3 个变量,为什么不列出游戏列表

games = [["Tennis", …], ["Cricket", …], ["Golf", …]]

以及结果列表

games_check = []

然后检查每个game in games,如果是var_games in game,如果是-将0添加到结果列表games_check,否则添加1

for game in games:
    if var_game in game:
        games_check.append(1)
    else:
        games_check.append(0)

或者让它更“Pythonic”

games_check = [(1 if var_game in game else 0) for game in games]

【讨论】:

    【解决方案3】:

    我认为对于您的情况,您可以这样做:

    if var_game in sports.games_1:
        games1_check = 1
    elif var_game in sports.games_2:
        games2_check = 1
    elif var_game in sports.games_3:
        games3_check = 1 
    

    【讨论】:

    • 那么for循环有什么用呢?
    猜你喜欢
    • 2021-06-13
    • 2016-08-31
    • 2021-01-20
    • 2014-05-05
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多