我正在尝试使用列表理解来更改列表的值我可以通过使用 3 个列表理解来做到这一点
clr = [1,2,2,1,3,1,2,3]
clr= ["green" if i== 1 else i for i in clr]
clr = ["yellow" if i==2 else i for i in clr]
clr = ["black" if i == 3 else i for i in clr]
使用下面提到的代码会引发语法错误
clr = ["green" if i== 1 else "yellow" if i==2 else "black" if i == 3 for i in clr]
有没有更好的办法可以做到??
是的。例如你可以定义一个字典:
the_dic = { 1 : 'green', 2 : 'yellow', 3 : 'black' }
然后执行mapping like:
clr = [the_dic.get(i,i) for i in clr]
或者通过使用map(..)
(in python-3.x /questions/tagged/python-3.x这作为一个生成器工作(因此是懒惰的):
clr = map(the_dic.get,clr)
这将插入None
s 如果元素在clr
字典里没有。
这将因此添加i
to the clr
列表,如果是not在字典里。这是因为我们使用the_dic.get(i,i)
。首先i
is the key我们查字典。第二i
是“后备”值:如果找不到键,我们返回的值。
如果你想过滤掉这些, 您可以使用:
clr = [the_dic[i] for i in clr if i in the_dic]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)