python 嵌套列表中,如何利用列表推导式方便快捷的得出符合条件的新列表
学过列表推导式以后,我们可以很方便的在一维列表中筛选出符合条件的元素组成新列表。如下例:
在列表lis01中,想要将所有含2个o的字符串提取出来,组成新的列表:
lis01 = ['food','good','hello','book','what']
a = [i for i in lis01 if i.count('o')==2]
print(a)
如果现有一个嵌套列表,则可用下面的方法实现:
lis02=[['food','good','hello','book','what'],['cool','think','you','we','how']]
b = [i for j in lis02 for i in j if i.count('o')==2]
print(b)
遍历顺序一定不可以错。
此方法在列表中每个子元素列表的列表深度相同时可一步到位得出正确结果,如果是下面这种情况:
lis03=[[['food','feed','foot'],'good',['look','loof','like'],'book'],['cool','our','you','how']]
c = [i for j in lis03 for h in j for i in h if i.count('o')==2]
print(c)
则返回的结果是:['food', 'foot', 'look', 'loof']
不难看出,这个结构只是遍历了最内层也即本例中的第三层列表后得出的结果。