按元素值筛选Python中的列表列表



假设我有一个列表lines,其中每个元素都是一个列表

['2015', 'Friday', 9.94, 0.0]
['2015', 'Tuesday', 10.54, 0.002615]
['2015', 'Wednesday', 9.86, -0.001531]
['2016', 'Monday', 10.41, 0.007841]
['2016', 'Thursday', 11.51, 0.006415]
['2017', 'Tuesday', 8.74, -0.003711]
['2017', 'Friday', 12.62, 0.008516]

例如,如果我想获得列表中第一个元素是2016,第二个元素是星期一的所有元素,我该如何过滤掉列表?可以将此视为按列值过滤pandas数据帧,但使用列表列表。

只需使用条件为的列表理解

>>> [x for x in lst if x[0] == '2016' and x[1] == "Monday"]
[['2016', 'Monday', 10.41, 0.007841]]

使用包含条件语句的列表理解。

lines = [
[2015, "Friday", 9.94, 0.0],
[2015, "Tuesday", 10.54, 0.002615],
[2015, "Wednesday", 9.86, -0.001531],
[2016, "Monday", 10.41, 0.007841],
[2016, "Thursday", 11.51, 0.006415],
[2017, "Tuesday", 8.74, -0.003711],
[2017, "Friday", 12.62, 0.008516]
]
requiredLine = [line for line in lines if line[0] == 2016 and line[1] == "Monday"]
print(requiredLine)

我将选择逻辑与以下过滤分离:

def func(x):
return x[0] == '2016' and x[1] == "Monday"
list(filter(func, your_data))

最新更新