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

标签 python dictionary colors lambda rgb

我正在研究用 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 将具有 e5int 函数的第二个参数表明,第一个参数基于 16 进制。因此,inte5 转换为等效的以 10 为基数的数字,然后它除以 256。

关于python - map (lambda x : int(x, 16)/256.0,[颜色[1 :3],颜色[3 :5],颜色[5:7]]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20441958/

相关文章:

python - 使用元类访问类中的属性 - python

python - Django filter() 查询在数据中给出额外的结果

R 整数键,值映射

c++ - 有没有办法在 Allegro 中对位图进行部分着色?

android - 渲染时出现异常

text - Swift 中的 UINavigationBar 文本颜色

python - Django 同时编辑模型的字段

python - 如何在 Django 错误电子邮件中包含服务器主机名?

dictionary - Ansible:更改嵌套变量的默认值

c# - 保持我的列表/词典在全局范围内可访问