编程语言
首页 > 编程语言> > python-将多列表理解转换为单列表理解

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(..)(在中,它可以作为生成器使用(因此很懒惰):

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