Я не верю, что ваш
[['21', '1'], ['21', '1'], ['21', '1'], ['21', '1'], ['22', '1'],...]
строка может быть получена из кода, который вы дали Ваша строка Subbasin_1.append
добавляет список к пустому списку Subbasin_1, поэтому вы должны получить что-то вроде
[[['22', '1'], ['21', '1']]]
с одним дополнительным уровнем вложенности.
Если вы избегаете ненужной конструкции пустого списка + добавления, вы должны получить то, что хотите:
>>> Subbasins_Imp = [['22', '1'], ['21', '15'], ['11', '3'], ['31', '4'], ['41', '13'], ['21', '1']]
>>>
>>> Subbasin_1 = [x for x in Subbasins_Imp if x[1] == '1']
>>> print Subbasin_1
[['22', '1'], ['21', '1']]
>>> OS_Count1 = [x for x in Subbasin_1 if x[0] == '21']
>>> print OS_Count1
[['21', '1']]
В качестве альтернативы, вы можете просто заменить append на extension. Я не рекомендую это, но это может помочь вам увидеть, что происходит:
>>> Subbasins_Imp = [['22', '1'], ['21', '15'], ['11', '3'], ['31', '4'], ['41', '13'], ['21', '1']]
>>>
>>> Subbasin_1 = []
>>> Subbasin_1.extend([x for x in Subbasins_Imp if x[1] == '1'])
>>> print Subbasin_1
[['22', '1'], ['21', '1']]
>>>
>>> OS_Count1 = []
>>> OS_Count1.extend([x for x in Subbasin_1 if x[0] == '21'])
>>> print OS_Count1
[['21', '1']]