2016-06-20 2 views
-5

Я использую Python 3.5.1 и у меня есть этот список:Как получить аргументы списка в списке

my_list = [["could", "you", "please"], ["help", "me", "?"]] 

Список может иметь более 2 подсписки но Подсписок всегда имеет 3 элемента. Переменные в каждом подсписке уникальны во всем списке. И я хочу найти «я» во всем списке, а затем получить каждое значение в конкретном подсписке, которое включает в себя «я» как разные значения, чтобы назначить их чему-то другому. В примере он должен напечатать:

>>>help 
>>>me 
>>>? 

Я также хотел бы, чтобы удалить подсписок в этом, как те, можно сделать? До сих пор у меня есть это:

for sublist in my_list: 
    if "me" in sublist: 
+1

почему вы делаете 'печать (" помощь ")' вместо, может быть, 'print (list)' также пытаться не использовать 'list' в качестве имени переменной, он затеняет встроенный. –

+0

какой подсписок вы хотите удалить? –

+0

это имеет значение? Мне понадобится это позже, но на данный момент мне просто нужно получить значения для назначения. Я хотел бы удалить подсписку, содержащую определенное значение. –

ответ

0

После обновления вашего следующий на замечании ранее, кажется, что вы ищете это:

In [1]: my_list = [["could", "you", "please"], ["help", "me", "?"]] 

In [2]: for sublist in my_list: 
    ...:  if "me" in sublist: 
    ...:   var1, var2, var3 = sublist 
    ...:   do_something_with(var1, var2, var3) 

Обратите внимание, что var1, var2 и var3 будет отскок различных значений в любое время "me" находится в подсписке. Вот почему я явно добавляю, что вам нужно что-то сделать с этими переменными, прежде чем переходить к следующему подсписку.

всего 2 примечания: в оригинальном my_list, один из ваших строк не хватало закрытия цитаты и старайтесь не затенять встроенных команд Пайтона: Я заменил list in my_list с sublist in my_list.

+0

Я не хочу печатать их, я просто хочу, чтобы они назначили их чему-то еще. е.g value1 = help –

+0

@StamKaly, который был непонятен из вашего исходного сообщения. Чтобы ответить на ваш конкретный вопрос, есть много вещей, чтобы рассмотреть. Вы ищете распаковку списка, и это зависит от количества элементов в подсписке, 2. от вашей версии Python (вы можете собирать оставшиеся упакованные элементы в переменной в Python 3). Подумайте о добавлении дополнительной информации к вашему вопросу. –

2

Вы можете использовать lambda & filter & in

print filter(lambda x: "me" in x, my_list) 

или с __contains__ методом.

print filter(lambda x: x.__contains__("me"), my_list) 

возвращает все вложенные списки, которые содержат конкретный элемент

Таким образом, то вы можете перебирать их и удалить их из внешнего списка

for a in list(filter(lambda x: "me" in x, my_list)): 
    my_list.remove(a) 
+3

С лямбдой вы можете использовать 'in' хотя:' lambda x: "me" в x' – Bahrom

+0

@Bahrom Да, это подходит лучше. Спасибо – Valentin

+0

Никогда не обновляйте список на месте, итерации по его элементам. Попробуйте использовать другой образец, и вы поймете, почему: 'my_list = [[" может "," вы "," пожалуйста "], [" help "," me ","? "], [" Test " , "me"], ["how", "else"], ["is", "me"]] ' –

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