在将它变成int之前,我是否必须将此元组转换为列表?

时间:2014-01-13 06:02:33

标签: python int pygame tuples

我是编程新手。我试图将pygame检测到的最高分辨率转换为整数但我在尝试将元组转换为int时收到错误。

我知道我无法更改元组,但我正在创建一个新的int并且它不会接受元组值。

所以我终于通过首先将元组转换为列表来解决这个错误。

import pygame, sys, time, random
from pygame.locals import *
pygame.init()

modes = pygame.display.list_modes()
maxWindow = list(modes[0])
WINDOWWIDTH = int(maxWindow[0])
WINDOWHEIGHT = int(maxWindow[1])
windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), pygame.FULLSCREEN)

是否有更有效的方式进行此转换?我猜测我还有很长的路要走。

此外,是否有一个pygame函数可以自动检测我的最大或原始分辨率,这个代码是不必要的?

由于

2 个答案:

答案 0 :(得分:2)

您可以尝试map功能:

WINDOWWIDTH, WINDOWHEIGHT = map(int, modes[0])

正如@LukasGraf所提到的,pygame.display.list_modes()返回包含整数的元组列表,因此,映射到int 是不必要的。相反,你可以这样做:

WINDOWWIDTH, WINDOWHEIGHT = modes[0]

答案 1 :(得分:0)

克里斯蒂安的回答符合你的需要。您还可以了解list comprehensions,它为映射,过滤等提供了通用结构。使用列表推导,您可以通过以下方式执行相同的操作:

WINDOW_WIDTH, WINDOW_HEIGHT = [int(x) for x in modes[0]]