我有一个有4个不同数字的列表,总共10个数字。对于这些数字中的每一个,我想分配一个颜色/单词。因此,问题是,我如何从一个数字列表变成一个颜色列表,其中每个相同的数字都由相同的颜色/单词表示?
初步名单:
my_list = [72, 50, 3, 50, 16, 72, 3, 72, 3, 50]
预期产出:
print(my_list) -> ['red', 'blue', 'green', 'blue', 'black', 'red', 'green', 'red', 'green', 'blue']
我尝试了什么?
我从我的_列表中提取了唯一编号:
my_list = [72,50,3,50,72,3,72,3,50]
UniqueList = list(set(my_list))
print(UniqueList)
现在,我需要从颜色列表中为这4个唯一的数字中的每一个分配一种颜色[‘红色’、‘蓝色’、‘绿色’、‘黑色’、‘黄色’、‘紫色’],然后用颜色再次生成我的_列表。不幸的是,我不知道如何前进。有什么想法吗?
还可以提供{int:color}键值对的dict,然后执行以下操作:
my_list = [72, 50, 3, 50, 16, 72, 3, 72, 3, 50]
mymap = {72: 'red', 50:'blue', 3:'green', 16:'black'}
print([mymap[k]for k in my_list])
## output
['red', 'blue', 'green', 'blue', 'black', 'red', 'green', 'red', 'green', 'blue']
您可以创建查找词典:
my_list = [72, 50, 3, 50, 16, 72, 3, 72, 3, 50]
colors = ['red', 'blue', 'green', 'black', 'yellow', 'purple']
lookup = dict(zip(set(my_list), colors))
output = [lookup[number] for number in my_list]
print(output)
输出
['red', 'green', 'black', 'green', 'blue', 'red', 'black', 'red', 'black', 'green']
您可以将<代码>查找> /代码>字典作为将颜色分配给数字之一的函数。在上面的示例中,查找具有以下值:
{72: 'red', 16: 'blue', 50: 'green', 3: 'black'}
这意味着每次72
出现时,它将分配'red'
。您可以像这样自定义lookup
:
lookup = {72 : 'green', 50 : 'black', 3 : 'yellow', 16: 'purple'}
每次出现72
时,将分配绿色。在此处查看有关如何创建词典的更多信息。
使现代化
如果要保留列表中的显示顺序,可以执行以下操作:
seen = set()
result = []
for e in my_list:
if e not in seen:
result.append(e)
seen.add(e)
print(result)
输出
[72, 50, 3, 16]
请注意,列表
result
是按外观顺序排列的。
实质上,我想命名列表的元素。 我可以这样做: 但是如果一个列表中有很多元素,那么这个过程会变得很长。 有没有更短的方法只命名一次散列?或许在此基础上有所变化: 但是使用来自函数<code>listmaker<code>的值?我在想象某种
问题内容: 这是有效的python行为吗?我认为最终结果应为[0,0,0],并且id()函数每次迭代应返回相同的值。如何使其成为pythonic,而不使用枚举或范围(len(bar))? 输出: 问题答案: 首先,您不能重新分配循环变量-可以,但是,这不会更改您要遍历的列表。因此,设置将不会更改列表,而只会更改局部变量(该变量恰好包含每次迭代开始时的迭代值)。 接下来,小数字(例如和)内部保存在小
问题内容: 上面给我一个错误,即“一个”不存在。不能以这种方式分配吗?我想为列表中的每个var分配一个递增编号。 问题答案: Python变量是值的 名称 。他们并没有真正“包含”这些价值观。 导致“ var”成为列表中每个元素的名称。在循环内,它不会影响列表:相反,它将导致不再是list元素的名称,而是开始成为当前名称的名称。 同样,当你创建列表,如果,而不是已经为值的名字,那么你可以不使用它们
问题内容: 与一样的界面。 该实际上是一个实例。 问题答案: 更新: 考虑到OP的重新编辑问题:
问题内容: 如何使用NumPy编写以下MATLAB代码? 分配行似乎很容易,但是我找不到将数组分配给另一个数组的列的示例。 问题答案: 使用。您需要选择作为单个numpy数组的列。如果可以选择格式化的方式,最好不要首先使其成为二维数组,而要使其成为常规的(行)数组:
问题内容: python中是否有将单词分解为单个字母列表的函数?例如: 要得到 问题答案: list(“Word to Split”) [‘W’, ‘o’, ‘r’, ‘d’, ‘ ‘, ‘t’, ‘o’, ‘ ‘, ‘S’, ‘p’, ‘l’, ‘i’, ‘t’]