您可以将列表名称存储为变量,而不是列表内容吗?

时间:2019-12-12 22:51:26

标签: python list variables

上下文:在Raspberrypi上运行的python代码为某些WS2801 RGB LED动画。要设置LED的颜色,您需要定义R,G和B数字值。我已经设置了一些调色板来存储可以很好地协同工作的RGB颜色范围,我想从该调色板中随机选择。

我将这些调色板存储为两个列表(列表在这里被截断了,以简洁起见):

xmascolours = [
        (0, 137, 42),
        (243, 243, 243),
        ]

halloweencolours = [
        (21, 24, 24),
        (49, 49, 49),
        ]

然后我想从这些列表之一中随机选择。如果我只是这样做:

colour = random.choice(xmascolours)

这很好。但是为了保持代码清晰(因为我定期将这些值随机化以使LED显示一系列颜色),我想将当前使用的调色板存储在另一个变量中,所以我只需要更改一次该值,然后我叫的所有地方都是random.choice。因此,我尝试这样做:

palette = 'xmascolours'
colour = random.choice(palette)

但是这似乎将颜色设置为单词调色板中随机选择的字符!显然我做错了。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

我建议使用列表字典。这样,您可以按调色板名称加载所需的调色板列表。

import random
colorScheme  = {}
colorScheme["xmascolours"] = [(0, 137, 42),(243, 243, 243)]
colorScheme["halloweencolours"] = [(21, 24, 24),(21, 24, 24)]
import pprint
print("Collection of colorSchemes:")
# You do not have to use pprint it just makes the list output look nice
pprint.pprint(colorScheme)

palette = colorScheme["xmascolours"]
print("All colors from xmascolors palette:")
print(palette)
colour = random.choice(palette) 
print("Random color from palette:")
print(colour)

输出

Collection of colorSchemes:
{'xmascolours': [(0, 137, 42), (243, 243, 243)], 'halloweencolours': [(21, 24, 24), (21, 24, 24)]}
All colors from xmascolors palette:
[(0, 137, 42), (243, 243, 243)]
Random color from palette:
(0, 137, 42)