【问题标题】:How can this Python code be written without the one line for loop?如果没有一行 for 循环,如何编写此 Python 代码?
【发布时间】:2019-05-03 22:36:29
【问题描述】:

我看到了一个将十六进制颜色代码转换为 RGB 颜色代码的函数。但我不太明白。怎么会用多行 for 循环编写?还有这条线在做什么: hex[i:i + 2], 16

def hex_to_rgb(hex):
    return tuple(int(hex[i:i + 2], 16) for i in (0, 2 ,4))

谢谢。

【问题讨论】:

  • 您好,您是否尝试过搜索“list/tuple/dict comprehensions”?

标签: python function for-loop hex rgb


【解决方案1】:

它所做的只是从十六进制中获取红色、绿色和蓝色值,将其转换为整数并将它们作为元组返回 https://www.rapidtables.com/convert/color/how-hex-to-rgb.html

def hex_to_rgb(hex):
    rgb_lst = []
    for i in (0, 2, 4):
        hex_int = int(hex[i: i + 2], 16) # convert to base 16 int
        rgb_lst.append(hex_int)
    return tuple(rgb_lst)

【讨论】:

  • 你的意思是rgb_list.append(hex_int),对吧? list 没有 push 方法。 for i in (0, 2, 5) 也应该是 for i in (0, 2, 4) 就像在 OP 问题中一样,那不是 range
  • for i in (0, 2, 4) 也可以,for i in range(0, 5, 2)
  • 效果很好,但为什么要在空列表中添加 hex_int?还有 hex_int 的值是多少?
  • 对于 rgb,我们需要红绿蓝三个值。假设十六进制为FF0000 红色。因此对于 hex_int,第一个值将是 255, 0, 0。我们将这些附加到 rgb_lst 中,即[255, 0, 0]
  • 好的,知道了。谢谢
猜你喜欢
  • 2018-08-04
  • 2013-07-24
  • 2012-12-03
  • 2017-09-11
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多