python - 乘以 RGB 值列表 Python

标签 python list sorting rgb multiplication

我正在尝试将 RGB 值列表相乘,更具体地说,将每个元素与不同的变量相乘 例如

colors = [(70, 76, 75), (97, 107, 93)]
multipliers = [2,3]
prod = lambda a,b: [a[i]*b[i] for i in range(len(a))]
newcolors = (prod (colors, multipliers))

期望的输出:

[(70,76,75), (70,76,75), (97, 107, 93), (97, 107, 93), (97, 107, 93)] 

但是我得到的输出是

[(70,76,75, 70,76,75), (97, 107, 93, 97, 107, 93,97, 107, 93)]

返回的列表不再包含 RGB 值

似乎有效的是

n = 2
newcolors = sorted(colors*n)

输出:

[(70,76,75), (70,76,75), (97, 107, 93), (97, 107, 93)]

但是这样所有 RGB 值都会乘以相同的 n 次。

有人知道如何解决这个问题吗?

最佳答案

您可以使用list comprehension和内置函数zip ,在一个 for 循环中将 colors 中的每个元素与 multipliers 中的每个数字配对,然后在第二个 for 循环中说出有多少个应重复当前颜色的次数

[e for e, m in zip(colors, multipliers) for _ in range(m)]

输出:

[(70, 76, 75), (70, 76, 75), (97, 107, 93), (97, 107, 93), (97, 107, 93)]

您还可以使用 2 个 for 循环,其中一个循环迭代每一对(颜色、乘数),在第二个/内部循环中,您使用当前乘数和 extending 重复当前颜色。 结果列表:

result = []
for e, m in zip(colors, multipliers):
    result.extend([e] * m)
print(result)

输出:

[(70, 76, 75), (70, 76, 75), (97, 107, 93), (97, 107, 93), (97, 107, 93)]

关于python - 乘以 RGB 值列表 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60127284/

相关文章:

python - 如何将 VBA 输出发送到 Python 脚本?

Python Mechanize 模块,选择表单中的所有输入字段

python - 如何在 .txt 文件中存储大型元组、列表和字典,然后将其分配给变量以在 python 代码中使用它们?

c++ - 尝试将 qsort 与 vector 一起使用

java - 如何在Java升序中按内部值对对象排序?

python - 我们可以在 Databricks 工作区中存储 .whl 文件吗?

python - 向 urllib2.Request 添加数据

c# - 通过将以特定字母开头的单词放在开头来对字符串列表进行排序

r - 如何在嵌套列表中使用 for 循环?

java - 使用合并排序与选择排序的比较