如何使用List Comprehensions实现以下结果?

时间:2016-12-20 17:54:08

标签: python list

我有以下列表,由列表列表组成,我想接受它:

list = [[original1,type1,unknow],[original2,type2,general]]

并使用List Comprehensions生成以下结果,其目的是验证最后一个元素是否为unknow,然后返回 原始元素,如果没有返回将军,因为我需要搜索可能有两个我尝试过:

期望的输出:

newList = [origina1,general]

我试过,但是我对comprenhension列表的sintaxys感到困惑,我希望有人能支持我

newList =[ x if list[3] == 'unknow' else x == general for x in list]

1 个答案:

答案 0 :(得分:1)

我认为如果最后一个元素是unknow,那么你的意思是获得第一个元素,如果不是,那么最后一个元素是:

In [3]: l = [['original1', 'type1', 'unknow'],['original2', 'type2', 'general']]

In [4]: [item[0] if item[-1] == 'unknow' else item[-1] for item in l]
Out[4]: ['original1', 'general']

或者,“解包”版本(如果子列表中的项目数已知且为3):

In [5]: [a if c == 'unknow' else c for a, _, c in l]
Out[5]: ['original1', 'general']

_是一种命名throwaway variables.

的规范方式