print(extraction[0])
打印[<colorgram.py Color: Rgb(r=245, g=243, b=238), 64.68350168350169%>
然后 extraction[0].rgb
打印 Rgb(r=245, g=243, b=238)
。
这是最令人困惑的部分:
当我输入
print(extraction[0].rgb[:])
时,它会打印(245, 243, 238)
。 [:]
运算符在这里到底是如何工作的?
import colorgram
extraction = colorgram.extract('img.jpg', 30)
colors = []
for c in extraction:
colors.append(c.rgb[:])
print(colors)
当我使用 colorgram 库时,我遇到了一个 [:] 运算符,我不明白它是如何工作的。
以下是切片运算符如何工作的详细说明:
list[start:end]
:返回一个新列表,其中包含从索引 start
到(但不包括)索引 end
的所有元素。list[start:]
:返回一个新列表,其中包含从索引 start
到列表末尾的所有元素。list[:end]
:返回一个新列表,其中包含从列表开头到(但不包括)索引 end
的所有元素。list[:]
:返回整个列表的浅拷贝。对于
extraction[0].rgb[:]
,它创建一个包含颜色的所有 RGB 值的元组。
这是一个带有列表的示例:
lst = [1, 2, 3, 4, 5]
print(lst[:]) # This will print [1, 2, 3, 4, 5]
在此示例中,
lst[:]
返回一个新列表,其中包含原始列表lst
的所有元素。
在您的代码中,切片运算符用于提取每种颜色的 RGB 值并将它们附加到
colors
列表中。结果是一个元组列表,其中每个元组代表从图像中提取的颜色的 RGB 值。