如何在Python中一次性为多个变量执行加法操作?
Python批量更新变量的简化方案
针对你提到的两种代码场景,以下是具体简化写法:
场景1:四个变量同时增加相同值(+3)
原代码
if keys[pygame.K_LEFT]: first_circle_pos_2 += 3 second_circle_pos_2 += 3 third_circle_pos_2 += 3 fourth_circle_pos_2 += 3
一行简化写法
通过元组解包+生成器表达式实现批量更新:
if keys[pygame.K_LEFT]: first_circle_pos_2, second_circle_pos_2, third_circle_pos_2, fourth_circle_pos_2 = (x + 3 for x in (first_circle_pos_2, second_circle_pos_2, third_circle_pos_2, fourth_circle_pos_2))
如果追求长期可维护性,建议提前将变量存入列表(后续修改变量数量或增量更便捷):
# 初始化时把变量存入列表 circle_positions = [first_circle_pos_2, second_circle_pos_2, third_circle_pos_2, fourth_circle_pos_2] # 更新时一行完成计算 if keys[pygame.K_LEFT]: circle_positions = [x + 3 for x in circle_positions] # 若仍需要单独变量,可再解包 first_circle_pos_2, second_circle_pos_2, third_circle_pos_2, fourth_circle_pos_2 = circle_positions
场景2:四个变量分别增加不同值(+6、+12、+18、+24)
原代码
if keys[pygame.K_LEFT]: first_circle_pos_2 += 6 second_circle_pos_2 += 12 third_circle_pos_2 += 18 fourth_circle_pos_2 += 24
实现类似多变量批量赋值的一行写法
利用zip配对变量与对应增量,通过生成器表达式完成批量计算:
if keys[pygame.K_LEFT]: first_circle_pos_2, second_circle_pos_2, third_circle_pos_2, fourth_circle_pos_2 = (x + y for x, y in zip((first_circle_pos_2, second_circle_pos_2, third_circle_pos_2, fourth_circle_pos_2), (6, 12, 18, 24)))
也可以用分号分隔实现一行(写法更直观,可读性稍弱):
if keys[pygame.K_LEFT]: first_circle_pos_2 +=6; second_circle_pos_2 +=12; third_circle_pos_2 +=18; fourth_circle_pos_2 +=24
内容的提问来源于stack exchange,提问作者user19656752
相关产品推荐
相关产品推荐

