Skip to main content
 首页 » 编程设计

python之map (lambda x : int(x, 16)/256.0,[颜色[1 :3], 颜色[3 :5], 颜色[5:7]])

2024年08月28日35qq78292959

我正在研究用 python 编写的 pacman 程序。其中一个模块是处理吃 bean 游戏的图形表示。这当然是一些主机颜色。列表如下:

GHOST_COLORS = [] ## establishes a list of ghost colours 
GHOST_COLORS.append(formatColor(.9,0,0)) # Red 
GHOST_COLORS.append(formatColor(0,.3,.9)) # Blue 
GHOST_COLORS.append(formatColor(.98,.41,.07)) # Orange 
GHOST_COLORS.append(formatColor(.1,.75,.7)) # Green 
GHOST_COLORS.append(formatColor(1.0,0.6,0.0)) # Yellow 
GHOST_COLORS.append(formatColor(.4,0.13,0.91)) # Purple 

这些颜色随后被映射:

GHOST_VEC_COLORS = map(colorToVector, GHOST_COLORS) 

这里是 colorToVector:

def colorToVector(color):  
  return map(lambda x: int(x, 16) / 256.0, [color[1:3], color[3:5], color[5:7]]) 

我想我了解 lambda 的工作原理。但是我对颜色切片的方式感到困惑:

  1. 整合到(x,16)元组中,
  2. 转换为 int --> 这不应该是可能的
  3. 然后除以 256.0?

每当我尝试创建元组并将其转换为 python 中的 int 时,我似乎都会收到错误消息。

我在这里错过了什么?

如有任何帮助,我们将不胜感激。

PS:当我介绍

print(color)  

和

print map(lambda x: int(x, 16) / 256.0, [color[1:3], color[3:5], color[5:7]])  

在混合中,我得到 GHOST_COLORS[0] 的以下值作为颜色:

>>#e50000 
>>[0.89453125, 0.0, 0.0] 

请您参考如下方法:

#e50000 是一个字符串,有 7 个字符。所以,

color[1:3] == "e5" # Hexadecimal value 
color[3:5] == "00" # Hexadecimal value 
color[5:7] == "00" # Hexadecimal value 

现在,它们一一传递给 lambda 函数 int(x, 16)/256.0。现在,x 将有 e5。 int 函数的第二个参数表明,第一个参数基于 16 进制。因此,int 将 e5 转换为等效的 10 进制数,然后它除以 256。