我是python的新手,我看到了这种形式,可以为列表提供值
color= ['red' if v == 0 else 'green' for v in y]
但是,例如,如果我尝试使用3号数字
color= ['red' if v == 0 elif v == 1 'blue' else 'green' for v in y]
有可能还是我必须这样做:
color = ['none']*len(y)
for i in range(0,len(color)):
if y[i] == 0:
color[i] = 'red'
elif y[i] == 1:
color[i] = 'blue'
else:
color[i] = 'green'
因为这种形式不像其他形式那么容易编写。 谢谢。
答案 0 :(得分:3)
您可以改用字典。
如果,您可以用更多详细信息来重组问题,那么我认为答案就更有意义了!
colors = {
0: 'red',
1: 'blue'
}
color = [colors.get(v, 'green') for v in y]
Dictionary类具有一个名为.get()的内置函数,该函数接受一个键和一个默认值(如果找不到该键)。 colors.get(v, 'green')
转换为:在字典v
中给我键colors
的值,但是如果找不到,给我'green'
。
答案 1 :(得分:2)
可以,但是您必须稍微修改语法(并使用else
代替elif
):
color= ['red' if v == 0 else 'blue' if v == 1 else 'green' for v in y]
示例:
y = [1,0,2,3,0,1]
color= ['red' if v == 0 else 'blue' if v == 1 else 'green' for v in y]
>>> color
['blue', 'red', 'green', 'green', 'red', 'blue']
答案 2 :(得分:2)
由于v
具有整数值,因此您可以使用这些值索引颜色名称的列表或元组,如下所示:
>>> y = [0,1,2,1,1,0,2,2]
>>> [ ('red', 'blue')[i] if i in (0,1) else 'green' for i in y]
['red', 'blue', 'green', 'blue', 'blue', 'red', 'green', 'green']
类似于字典方法,这种方法可以很容易地扩展到更长的项目列表,但是您不必创建单独的字典。
答案 3 :(得分:0)
您可以像这样使用字典:
color_codes = { 0: 'red',
1: 'blue',
2: 'green'
}
color = [color_codes[v] for v in y]