2016-10-09 2 views
0

Я хочу, чтобы вернуть все подсписки списков, которая содержит определенную подстроку в определенном столбце:Одна строка кода Python, чтобы вернуть все подсписки из списка, содержащих определенную подстроку в particluar колонке

Для например:

List=[["2006ab","2005ac"],["2005ab","2004ac"],["2006ab","2005ac"],["2006ab","2003ac"],["2006ab","2005ac"]] 

Критерии поиска: вернуть все подписи, которые содержат подстроку 2005 по второму индексу.

Выход:

[["2006ab","2005ac"],["2006ab","2005ac"],["2006ab","2005ac"]] 

Я попытался с помощью:

matching = [s for s in List if "2005" in s[1]] 

но он возвращает:

[["2006ab","2005ac"],["2005ab","2004ac"],["2006ab","2005ac"],["2006ab","2005ac"]] 
+0

да, но 2005 может быть 0-й индекс подсписка а, Ь мое намерение состоит в том, чтобы вернуть все подсписки только если она содержит 2005 в 1-й индекс подсписок. –

+0

Запустите его снова. В коде нет ничего плохого. –

+0

Ваш код дает правильный результат. '[s для s в списке, если« 2005 »в s [1]]' дает '[['2006ab', '2005ac'], ['2006ab', '2005ac'], ['2006ab', '2005ac'] ] '. – MisterMiyagi

ответ

1

Ваш список понимание подход хорош и дает правильный результат. Вы уверены, что ваш код тот же, из которого вы вставили выход, потому что он работает для меня:

>>> List=[["2006ab","2005ac"],["2005ab","2004ac"],["2006ab","2005ac"],["2006ab","2003ac"],["2006ab","2005ac"]] 
>>> [sublist for sublist in List if '2005' in sublist[1]] 
[['2006ab', '2005ac'], ['2006ab', '2005ac'], ['2006ab', '2005ac']] 

, который так же, как то, что вы хотите.

Если вы ищете альтернативу, вы можете использовать filter()

>>> filter(lambda x: '2005' in x[1], List) 
[['2006ab', '2005ac'], ['2006ab', '2005ac'], ['2006ab', '2005ac']] 
+1

Разве это не тот же код, что и его, только что заменивший 's'' sublist'? – MisterMiyagi

+0

Это не отличается от кода OP, кроме переименования 's' в' sublist'. В чем смысл вашего ответа? –

+0

Обновлен ответ. Поскольку вопрос не был должным образом отформатирован, я пропустил последнюю часть –

 Смежные вопросы

  • Нет связанных вопросов^_^