python-将多列表理解转换为单列表理解
作者:互联网
我正在尝试使用列表理解来更改列表的值,我可以通过使用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' }
然后执行如下映射:
clr = [the_dic.get(i,i) for i in clr]
或通过使用map(..)(在python-3.x中,它可以作为生成器使用(因此很懒惰):
clr = map(the_dic.get,clr)
如果clr中的元素不在字典中,则将插入None.
因此,如果i不在字典中,则会将i添加到clr列表中.这是因为我们使用the_dic.get(i,i).第一个i是我们在字典中查找的关键字.第二个i是“后备”值:如果找不到密钥,则返回的值.
如果要过滤掉这些,可以使用:
clr = [the_dic[i] for i in clr if i in the_dic]
标签:list,python,list-comprehension,python-3.x 来源: https://codeday.me/bug/20191025/1931834.html